Pagini recente » Cod sursa (job #620513) | Cod sursa (job #2935679) | Cod sursa (job #333990) | Cod sursa (job #1621428) | Cod sursa (job #1367132)
#include <stdio.h>
int n,nrk,aux,x,li,ls,a[16000],k,flag;
int main()
{
FILE * f = fopen("transport.in","r");
FILE * g = fopen("transport.out","w");
fscanf(f,"%d%d",&n,&k);
flag =1;
for(int i = 1 ;i<=n;i++)
{
fscanf(f,"%d",&a[i]);
if(a[i]>li) li = a[i];
ls +=a[i];
}
do
{
x = (li+ls)/2;
nrk = 0;
aux = 0;
printf("%d %d\n",li,ls);
for(int i = 1 ;i<=n;i++)
{
if(a[i] +aux <=x)
aux +=a[i];
else {
nrk++;
aux = a[i];
}
if(aux == x)
{
nrk++;
aux = 0;
}
}
if(nrk == k)
{
fprintf(g,"%d ",ls);
flag = 0;
}
if(nrk > k) li = x+1;
else {if(nrk < k) ls = x-1;}
}while(li<=ls && flag);
fclose(f);
fclose(g);
return 0;
}