Pagini recente » Cod sursa (job #2312598) | Cod sursa (job #3235196) | Cod sursa (job #1086542) | Cod sursa (job #1169460) | Cod sursa (job #1274378)
#include <stdio.h>
int v[16001];
int n, k;
int ok(int num)
{
int tr=0,s=0,i;
for (i=0;i<n;i++)
{
if (v[i]>num)
return 0;
s=s+v[i];
if (s>num)
{
tr++;
s=v[i];
}
}
if (s>0)
tr++;
return tr<=k;
}
int bs(int dr)
{
int med,last,st;
last=dr+1;
st=1;
while(st<=dr)
{
med=dr-((dr-st)>>1);
if(ok(med)!=0)
{
last=med;
dr=med-1;
}
else
st=med+1;
}
return last;
}
int main()
{
FILE *f1,*f2;
int i,s=0;
f1=fopen("transport.in","r");
fscanf(f1,"%d%d",&n,&k);
for (i=0; i<n;i++)
{
fscanf(f1,"%d",&v[i]);
s=s+v[i];
}
fclose(f1);
f2=fopen("transport.out","w");
fprintf(f1,"%d",bs(s));
fclose(f2);
return 0;
}