n = int(input())
bursztyny = list(map(int, input().split()))
def czy_pasuje(k):
aktywne_fale = 0
koniec = [0] * (n + 1)
for i in range(n):
aktywne_fale -= koniec[i]
if bursztyny[i] < aktywne_fale:
return False
nowe_fale = bursztyny[i] - aktywne_fale
aktywne_fale += nowe_fale
if i + k < n:
koniec[i + k] += nowe_fale
return True
lewo = 1
prawo = n
odpowiedz = 1
while lewo <= prawo:
srodek = (lewo + prawo) // 2
if czy_pasuje(srodek):
odpowiedz = srodek
lewo = srodek + 1
else:
prawo = srodek - 1
print(odpowiedz)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | n = int(input()) bursztyny = list(map(int, input().split())) def czy_pasuje(k): aktywne_fale = 0 koniec = [0] * (n + 1) for i in range(n): aktywne_fale -= koniec[i] if bursztyny[i] < aktywne_fale: return False nowe_fale = bursztyny[i] - aktywne_fale aktywne_fale += nowe_fale if i + k < n: koniec[i + k] += nowe_fale return True lewo = 1 prawo = n odpowiedz = 1 while lewo <= prawo: srodek = (lewo + prawo) // 2 if czy_pasuje(srodek): odpowiedz = srodek lewo = srodek + 1 else: prawo = srodek - 1 print(odpowiedz) |
English