Pagini recente » Cod sursa (job #491417) | Cod sursa (job #697451) | Cod sursa (job #1343287) | Cod sursa (job #2118521) | Cod sursa (job #832270)
Cod sursa(job #832270)
#include<cstdio>
using namespace std;
FILE *f,*g;
int maxi,s,ld,ls,mij,nr,n,k,i,v[16001];
int verifica(int x)
{
int sum,i,p;
i=1; sum=0; p=k;
while(sum+v[i]<=x&&i<=n)
{
sum+=v[i];
++i;
if(sum+v[i]>x)
{
--p;
sum=0;
if(p==0)
break;
}
}
if(i>n)
return 1;
return 0;
}
int main()
{
f=fopen("transport.in","r");
g=fopen("transport.out","w");
fscanf(f,"%d%d",&n,&k);
for(i=1;i<=n;++i)
{
fscanf(f,"%d",&v[i]);
s+=v[i];
}
ld=s/k; ls=s; nr=0;
while(ld<=ls)
{
mij=(ld+ls)/2;
if(verifica(mij))
{
nr=mij;
ls=mij-1;
}
else
{
ld=mij+1;
}
}
fprintf(g,"%d",nr);
return 0;
}