Pagini recente » Cod sursa (job #327049) | Cod sursa (job #2408415) | Cod sursa (job #2579033) | Cod sursa (job #2548863) | Cod sursa (job #407289)
Cod sursa(job #407289)
#include<stdio.h>
FILE *f=fopen("transport.in","r"), *g=fopen("transport.out","w");
int v[16050],st,n,k,i,k1,s,max,s1,lkf,mij,lkw;
int main()
{
fscanf(f, "%d%d", &n, &k);
for(i=1;i<=n;i++)
{
fscanf(f,"%d", &v[i]);
if(v[i]>max) max=v[i];
s+=v[i];
}
st=max-1;
s1=s, s=0;
mij=(max+s1)/2;
while(st<=s1)
{
for(i=1;k1<=k && i<=n;i++)
{
s+=v[i];
if(s+v[i+1]>mij || i==n)
{
k1++;
s=0;
}
}
if(k1<=k)
{
if(mij==lkf+1)
{
fprintf(g,"%d", mij);
return 0;
}
else
{
lkw=mij;
s1=mij;
mij=(st+s1)/2;
k1=0, s=0;
}
}
else
{
lkf=mij;
st=mij;
mij=(st+s1)/2;
k1=0, s=0;
}
if(lkw==lkf+1)
{
fprintf(g,"%d", lkw);
return 0;
}
if(lkw==max)
{
fprintf(g,"%d", lkw);
return 0;
}
}
return 0;
}