Pagini recente » Cod sursa (job #890125) | Cod sursa (job #174365) | Cod sursa (job #972086) | Cod sursa (job #3189846) | Cod sursa (job #352061)
Cod sursa(job #352061)
#include<cstdio>
using namespace std;
#define IN "transport.in","r",stdin
#define OUT "transport.out","w",stdout
int N , K ;
int V[16020];
bool corect(int kg)
{
int sum = 0;
int transp = 0;
for(int i = 1 ; i <= N ; ++i)
if(V[i] + sum > kg)
{
sum = V[i];
++transp;
}
else sum += V[i];
if(sum > 0)
++transp;
if(transp > K)
return false;
return true;
}
int main()
{
int rez;
freopen(IN);
freopen(OUT);
scanf("%d%d",&N,&K);
int max = - 200000;
for(int i = 1 ; i <= N ; ++i){
scanf("%d",&V[i]);
if(V[i] > max)
max = V[i];
}
int st = max , dr = max * 16020 , mij;
while(st <= dr)
{
mij = (st + dr) / 2;
if(corect(mij) == true)
rez = mij, dr = mij - 1;
else
st = mij + 1;
}
printf("%d\n",rez);
return 0;
}