Pagini recente » Monitorul de evaluare | Cod sursa (job #1111864) | Cod sursa (job #701846) | Cod sursa (job #2493080) | Cod sursa (job #1670719)
#include <iostream>
#include <stdio.h>
using namespace std;
int v[16005];
int main()
{
int n,k,i,s,st,dr,med,sum,ok,tr,last;
FILE *fin, *fout;
fin=fopen("transport.in", "r");
fout=fopen("transport.out", "w");
fscanf(fin, "%d%d", &n, &k);
s=0;
for(i=1; i<=n; i++)
{
fscanf(fin, "%d", &v[i]);
s=s+v[i];
}
st=1;
dr=s;
while(st<=dr)
{
med=(st+dr)/2;
sum=0;
ok=1;
tr=1;
for(i=1; i<=n; i++)
{
if(sum+v[i]<=med)
sum=sum+v[i];
else
{
sum=v[i];
tr++;
}
}
if(tr<=k)
{
last=med;
dr=med-1;
}
else
st=med+1;
}
fprintf(fout, "%d", last );
fclose(fin);
fclose(fout);
return 0;
}