Pagini recente » Cod sursa (job #2434695) | Cod sursa (job #2610827) | Cod sursa (job #459001) | Cod sursa (job #3179908) | Cod sursa (job #308475)
Cod sursa(job #308475)
#include<cstdio>
#define IN "transport.in","r",stdin
#define OUT "transport.out","w",stdout
#define maxN 16020
int V[maxN] ;
int N , K ;
int Max = -100000000;
int sum ;
int right(int c)
{
int kg = 0 , trans = 1;
for(int i = 1 ; i <= N ; ++i)
{
if(kg + V[i] > c) {++trans;kg = V[i];}
else kg += V[i];
}
return trans <= K;
}
int main()
{
freopen(IN);
freopen(OUT);
scanf("%d%d",&N,&K);
for(int i = 1 ; i <= N ; ++i)
{
scanf("%d",&V[i]);
sum += V[i];
if(Max < V[i]) Max = V[i];
}
int st = Max , dr = sum ,m;
int rez ;
while(st <= dr)
{
m = (st + dr) / 2;
if(right(m))
{
dr = m - 1;
rez = m;
}
else st = m + 1;
}
printf("%d\n",rez);
return 0;
}