Pagini recente » Cod sursa (job #3255056) | Cod sursa (job #2658840) | Cod sursa (job #381290) | Cod sursa (job #1237589) | Cod sursa (job #131364)
Cod sursa(job #131364)
#include <stdio.h>
FILE*f=fopen("transport.in","r");
FILE*g=fopen("transport.out","w");
long n,i,max,su,k,salt[16001],rasp,cap;
unsigned char ok(long cap)
{
long s=0,ind=1;
for (i=1; i<=n-1; i++)
if (salt[i]+s<=cap) s+=salt[i];
else { s=salt[i]; ind++; }
if (s+salt[n]>cap) trans++;
if (ind<=k) return 1;
else return 0;
}
int main()
{
fscanf(f,"%ld %ld",&n,&k);
for (i=1; i<=n; i++)
{
fscanf(f,"%ld",&salt[i]);
if (salt[i]>max) max=salt[i];
su+=salt[i];
}
if (k>n) fprintf(g,"%ld",max);
else
{
while (max<=su)
{
cap=(max+su)/2;
if (ok(cap)==1) { rasp=cap; su=cap-1; }
else max=cap+1;
}
}
fprintf(g,"%ld",rasp);
return 0;
}