Pagini recente » Cod sursa (job #2803361) | Cod sursa (job #3272880) | Cod sursa (job #3212768) | Cod sursa (job #646415) | Cod sursa (job #1197951)
#include <cstdio>
using namespace std;
FILE *fi=fopen("transport.in","r");
FILE *fo=fopen("transport.out","w");
int i,n,k;
int A[16001];
int mx,s;
bool test(int val)
{
int i;
int s=0;
int nr=1;
for(i=1;i<=n;i++)
if(A[i]+s<=val)
s+=A[i];
else
{
s=A[i];
nr++;
}
if(nr<=k)
return true;
return false;
}
int bs(int st,int dr)
{
int m;
if(st==dr)
return st;
m=(st+dr)/2;
if(test(m))
return bs(st,m);
return bs(m+1,dr);
}
int main()
{
fscanf(fi,"%d%d",&n,&k);
for(i=1;i<=n;i++)
{
fscanf(fi,"%d",&A[i]);
s+=A[i];
if(A[i]>mx)
mx=A[i];
}
fprintf(fo,"%d\n",bs(mx,s));
fclose(fi);
fclose(fo);
return 0;
}