Pagini recente » Cod sursa (job #1438621) | Cod sursa (job #2483286) | Cod sursa (job #2299190) | Cod sursa (job #959563) | Cod sursa (job #453486)
Cod sursa(job #453486)
#include<stdio.h>
int saltele[16000],n,k;
int test(int cap)
{
int i,drum=0,sum=0;
i=0;
while(i<n)
{
sum=0;
for(;;)
{
if(sum+saltele[i]<=cap)
sum+=saltele[i++];
else
break;
}
if(sum==0)
{
drum=k+1;
break;
}
drum++;
}
if(drum<=k)
return 1;
return 0;
}
int main()
{
int i,suma=0,st,dr,mij,sol,max=-1;
FILE *f=fopen("transport.in","r");
fscanf(f,"%i%i",&n,&k);
for(i=0;i<n;i++)
{
fscanf(f,"%i",saltele+i);
suma+=saltele[i];
if(saltele[i]>max)
max=saltele[i];
}
fclose(f);
st=0;
dr=suma;
while(st<=dr)
{
mij=(st+dr)/2;
if(test(mij)==1)
{
dr=mij-1;
sol=mij;
}
else
st=mij+1;
}
f=fopen("transport.out","w");
fprintf(f,"%i\n",sol);
fclose(f);
return 0;
}