Pagini recente » Cod sursa (job #2668614) | Cod sursa (job #2123992) | Cod sursa (job #229519) | Cod sursa (job #149731) | Cod sursa (job #1031566)
#include <stdio.h>
#include <stdlib.h>
int v[16000];
int main()
{ FILE*fi,*fout;
int i,j,n,con,max,a,b,sum,s,k,flag;
fi=fopen("transport.in" ,"r");
fout=fopen("transport.out" ,"w");
fscanf(fi,"%d %d\n" ,&n,&k);
s=0;
a=0;
for(i=0;i<n;i++)
{
fscanf(fi,"%d\n" ,&v[i]);
if(a<v[i])
a=v[i];
s=s+v[i];
}
flag=1;
b=s;
while(flag)
{
max=(a+b)/2;
printf("%d " ,max);
con=0;
j=0;
while(j<n&&con<k+1)
{
sum=0;
while(sum<max&&j<n)
{
sum=sum+v[j];
j++;
}
if(sum>max&&j<n)
j--;
con++;
}
if(sum>max&&j==n)
con++;
if(con==k)
{
fprintf(fout,"%d" ,max);
flag=0;
}
if(con>k)
{
if((a+b)/2==a)
a=(a+b)/2+1;
else
a=(a+b)/2;
}
if(con<k)
b=(a+b)/2;
}
fclose(fi);
fclose(fout);
return 0;
}