Pagini recente » Cod sursa (job #2730217) | Cod sursa (job #1799729) | Cod sursa (job #2192213) | Cod sursa (job #1454277) | Cod sursa (job #1255877)
#include <stdio.h>
int n,k,a[16000],max=0,;
int test(int nr)
{
int ct=0,temp=0;
for(int i=0;i<n;i++)
{
if(ct==k)
{
return 0;
}
else if(temp+a[i]<=nr)
{
temp+=a[i];
}
else
{
ct++;
temp=0;
}
}
return 1;
}
int main()
{
FILE *fin,*fout;
fin=fopen("transport.in","r");
fout=fopen("transport.out","w");
fscanf(fin,"%d %d",&n,&k);
int s=0,mij,min=32000;
for(int i=0;i<n;i++)
{
fscanf(fin,"%d",&a[i]);
s+=a[i];
if(max<a[i])
{
max=a[i];
}
}
if(max<s/k)
{
max=s/k;
}
while(s-max>1)
{
mij=(max+s)/2;
if(test(mij)==1)
{
if(min>mij)
{
min=mij;
}
s=mij;
}
else
{
max=mij+1;
}
}
fprintf(fout,"%d",min);
}