Pagini recente » Cod sursa (job #645871) | Cod sursa (job #2043464) | Monitorul de evaluare | Clasament oji12simulation | Cod sursa (job #2297024)
#include <iostream>
#include <cstdio>
using namespace std;
int n, k;
int v[16001];
int verif(int a) {
int i, x=1, s=0;
for(i=1;i<=n;i++) {
if(s+v[i]<=a)
s+=v[i];
else {
s=v[i];
x++;
}
}
if(x<=k)
return 1;
return 0;
}
int main() {
FILE *fin, *fout;
int st, dr, u, i;
fin=fopen("transport.in","r");
fout=fopen("transport.out","w");
fscanf(fin, "%d%d",&n,&k);
for(i=1;i<=n;i++)
fscanf(fin, "%d",&v[i]);
st=1;
dr=256000000;
u=256000000;
while(st<=dr) {
u=(st+dr)/2;
if(verif((st+dr)/2)==1)
dr=(st+dr)/2-1;
else
st=(st+dr)/2+1;
}
fprintf(fout, "%d",u);
return 0;
}