Pagini recente » Cod sursa (job #2147604) | Cod sursa (job #1885235) | Cod sursa (job #1594093) | Cod sursa (job #965545) | Cod sursa (job #453447)
Cod sursa(job #453447)
#include<stdio.h>
int saltele[16000],n,k;
int test(int cap)
{
int i,drum=1,sum=0;
i=0;
while(i<n)
{
sum=0;
while(sum<=cap)
sum+=saltele[i++];
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(mij<max)
break;
if(test(mij)==1)
{
dr=mij;
sol=mij;
}
else
st=mij+1;
}
f=fopen("transport.out","w");
fprintf(f,"%i\n",sol);
fclose(f);
return 0;
}