#1593. Danh sách phát cân bằng (PLAYLIST)

Bộ nhớ: 512 MiB Thời gian: 1000 ms Nhập/xuất từ luồng chuẩn
Kiểu bài: Thông thường Kiểu chấm: So sánh văn bản
Đưa lên bởi: Trùm CUỐI

Đề bài

Bạn có một danh sách phát nhạc (playlist) gồm n bài hát, bài thứ i có độ hay là a_i . Danh sách này được phát theo chế độ lặp lại vô hạn: sau bài n sẽ quay lại bài 1 , rồi bài 2 , v.v.

Một dãy các bài hát liên tiếp được gọi là "cân bằng" nếu với mọi bài hát trong dãy đó, độ hay của nó ít nhất bằng một nửa độ hay của bài hát hay nhất trong cùng dãy đó. Nói cách khác, nếu M là giá trị lớn nhất trong dãy, thì mọi phần tử x trong dãy phải thỏa mãn 2 \cdot x \ge M (hay M \le 2 \cdot x ). Điều này tương đương với điều kiện: \max(\text{dãy}) \le 2 \cdot \min(\text{dãy}) .

Với mỗi bài hát i ( 1 \le i \le n ) bắt đầu danh sách, hãy tính xem bạn có thể nghe được tối đa bao nhiêu bài hát liên tiếp (bắt đầu từ i ) cho đến khi dãy bài hát không còn "cân bằng" nữa. Nếu bạn có thể nghe vô hạn, in ra -1.

Dữ liệu:

  • Dòng đầu tiên chứa số nguyên n ( 1 \le n \le 100,000 ).
  • Dòng thứ hai chứa n số nguyên a_1, a_2, \dots, a_n ( 1 \le a_i \le 10^9 ).

Kết quả:

  • In ra n số nguyên trên một dòng. Số thứ i là độ dài lớn nhất của dãy bài hát cân bằng bắt đầu từ bài i .

Ví dụ:

Dữ liệu:

4
11 5 2 7

Kết quả:

1 1 3 2

Dữ liệu:

4
3 2 5 3

Kết quả:

5 4 3 6

Giới hạn:

  • Subtask #1: n \le 5000 .
  • Subtask #2: Không có ràng buộc bổ sung.