Pagini recente » Cod sursa (job #1116223) | Cod sursa (job #1659190) | Cod sursa (job #2513075) | Cod sursa (job #544421) | Cod sursa (job #1378368)
#include <iostream>
#include <fstream>
#define LL long long int
using namespace std;
LL N,K,a[100010];
bool check(LL x){
LL i,c=1,l=0;
for (i=1; i<=N && c<=K; i++){
if (a[i]+l<=x) l+=a[i];
else c++,l=min(l,a[i]-x+l);
if (l==x) c++,l=0;
}
return c>K;
}
int main(){
ifstream fin("grupuri.in");
ofstream fout("grupuri.out");
fin >> K >> N;
int i;
for (i=1; i<=N; i++) fin >> a[i];
LL l=1,r=(1LL<<40),mid;
while (r-l>1){
mid=(l+r)/2;
if (check(mid)) l=mid;
else r=mid-1;
}
if (check(l+1)) l++;
fout <<l;
return 0;
}