Pagini recente » Cod sursa (job #2533631) | Cod sursa (job #781764) | Cod sursa (job #2479845) | Cod sursa (job #1825517) | Cod sursa (job #1128448)
#include <cstdio>
using namespace std;
int v[16001];
int n,i,j,k;
int poate(int val)
{
int ok=1,cate=1,acum=0;
for(i=1;i<=n;i++)
{
if(acum+v[i]<=val)
{
acum=acum+v[i];
}
else
{
cate++;
acum=v[i];
}
if(v[i]>val)
ok=0;
}
if(cate>k)
ok=0;
return ok;
}
int main()
{
FILE *in,*out;
in=fopen("transport.in","r");
out=fopen("transport.out","w");
fscanf(in,"%d%d",&n,&k);
long long pas,val;
int fl;
for(i=1;i<=n;i++)
fscanf(in,"%d",&v[i]);
val=0;
pas=1<<28;
while(pas>=1)
{
fl=poate(val+pas);
if(fl==0)
{
val=val+pas;
}
pas=pas/2;
}
fprintf(out,"%lld",val+1);
return 0;
}