Danh sách phát cân bằng

Đề bài

Mô tả

Một danh sách phát gồm n bài hát được đánh số từ 1 đến n. Danh sách phát theo vòng lặp: ngay sau khi bài i kết thúc thì bài i+1 bắt đầu phát; sau bài n là bài 1.

Mỗi bài i có độ "hay" ai. Bạn chọn một bài để bắt đầu, danh sách sẽ phát từ bài đó theo thứ tự vòng tròn. Tại mọi thời điểm, gọi x là độ "hay" lớn nhất trong tất cả các bài đã phát từ lúc bắt đầu. Ngay khi gặp một bài có độ hay nhỏ hơn ngặt x/2 (không làm tròn), bạn lập tức tắt nhạc.

Với mỗi bài i, hãy tính số bài bạn sẽ nghe nếu bắt đầu từ bài i, hoặc xác định bạn sẽ nghe nhạc mãi mãi. Nếu bạn nghe cùng một bài nhiều lần, mỗi lần đều được đếm.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n (2n105) — số bài trong danh sách.
  • Dòng thứ hai chứa n số nguyên a1,a2,,an (1ai109).

Dữ liệu ra

In ra n số c1,c2,,cn, trong đó ci là số bài bạn nghe khi bắt đầu từ bài i, hoặc 1 nếu bạn không bao giờ tắt nhạc.

Ràng buộc

  • 2n105
  • 1ai109

Ví dụ

Input Output Giải thích
4
11 5 2 7
1 1 3 2 Bắt đầu từ bài 3: nghe các bài 3, 4, 1 (độ hay lớn nhất tới đó là 11), rồi gặp bài 2 có a2=5<11/2 nên dừng — đã nghe 3 bài.
4
3 2 5 3
5 4 3 6 Bắt đầu từ bài 4: nghe các bài 4, 1, 2, 3, 4, 1 (độ hay lớn nhất là 5), rồi gặp bài 2 có a2=2<5/2 nên dừng — đã nghe 6 bài. Bài 1 và bài 4 đều được đếm hai lần.
3
4 3 6
-1 -1 -1 Bắt đầu từ bất kỳ bài nào, độ hay lớn nhất sẽ đạt 6, và không có bài nào nhỏ hơn 6/2=3 nên không bao giờ dừng.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0