Problem:

G: 労働 (Working)

コウさんはこれから $N$ 日間、毎日同じ件数の仕事をすることにした。

$N$ 日間のうち $i$ 日目には仕事が $A_i$ 件追加される。

コウさんには今溜まっている仕事はなく、$N$ 日目までにすべての仕事が終わっている必要はない。

一日で最大何件の仕事ができるか。

ただしコウさんは優秀なので、仕事が存在する限り何件でも仕事をすることができる。

入力

1 行目には $N$が与えられる。

2 行目には $N$ 個の整数 $A_1, A_2, A_3, \dots, A_N$ が空白区切りで与えられる。

出力

一日にできる仕事の最大の件数を出力せよ。最後には改行を入れること。

制約

    
$N$ は $1$ 以上 $100$ 以下の整数

    
$A_1, A_2, A_3, \dots, A_N$ は $1$ 以上 $100$ 以下の整数

入力例1

5
4 2 5 3 1

出力例1

3

一日 $4$ 件以上仕事することにすると、2 日目に仕事が尽きてしまいます。

入力例2

5
9 9 1 9 9

出力例2

6



Sample input:
5
4 2 5 3 1


Sample output:
3

Submission status: Accepted

Solution code:
N=int(input())
A=list(map(int,input().split()))

SUM=[A[0]]
for i in range(1,N):
    SUM.append(SUM[-1]+A[i])

B=[SUM[i]//(i+1) for i in range(N)]

print(min(B))

Submission status: Accepted

Solution code:
n = int(input())
a = list(map(int, input().split()))

r = 100
for i in range(n):
  r = min(r, sum(a[:i+1])//(i+1))
print(r)

Submission status: Accepted

Solution code:
N = int(input())
A = [int(x) for x in input().split()]

def check(x):
    work = 0
    for a in A:
        work += a
        if work < x:
            return 0
        work -= x
    return 1

ans = 0
for i in range(101):
    if check(i):
        ans = i
print(ans)

Submission status: Accepted

Solution code:
n = map(int,input().split())
a = list(map(int,input().split()))

ok,ng = 1,10000
while ng-ok > 1:
    mid = (ok+ng)//2

    valid = True
    now = 0
    for i in a:
        now += i
        now -= mid
        if now < 0:
            valid = False

    if valid:
        ok = mid
    else:
        ng = mid

print(ok)

Submission status: Accepted

Solution code:
N = int(input())
A = [int(x) for x in input().split()]

sum = A[0]
ans = A[0]

for i in range(1, N):
    sum += A[i]
    ans = min(ans, sum // (i + 1))

print(ans)

Submission status: Accepted

Solution code:
n=int(input())
a=[int(x) for x in input().split()] 
x=100
for i in range(n):
  x=min(x,sum(a[:i+1])//(i+1))
print(x)

Submission status: Accepted

Solution code:
n=int(input())
ls=list(map(int,input().split()))
ans=0

for i in range(1,sum(ls)//n+1):
    am=0
    ans+=1
    for j in range(0,n-1):
        am=am+ls[j]-i
        if am<0:
            break
    else:
        continue
    if am!=0:
        ans=ans-1
    break

print(ans)

Submission status: Accepted

Solution code:
n = int(input())
a = list(map(int,input().split()))

ans = 10 ** 7
sum = 0
for i in range(n):
	sum+=a[i]
	ans = min(ans,sum // (i + 1))
print(ans)

Submission status: Accepted

Solution code:
n=int(input())
a=list(map(int,input().split()))
ans=float("inf")
s=0
for i in range(n):
    s+=a[i]
    ans=min(ans,int(s/(i+1)))
print(ans)

Submission status: Accepted

Solution code:
n = int(input())
li = list(map(int,input().split()))
fl = False
for i in range(1,200):
    task = 0
    if fl == True:
        break
    for a in li:
        task += a
        if task >= i:
            task -= i
        else:
            print(i-1)
            fl = True
            break

Submission status: Accepted

Solution code:
n = int(input())
li = list(map(int, input().split()))
ans = 1000
s = 0
for i in range(n):
    s += li[i]
    ans = min(ans, s//(i+1))
print(ans)

Submission status: Accepted

Solution code:
from itertools import accumulate
n=int(input())
a=list(accumulate(map(int,input().split())))
for i in range(100,0,-1):
    for j in range(n):
        if i*(j+1)>a[j]:break
    else:
        print(i)
        break