Pagini recente » Cod sursa (job #2405633) | Cod sursa (job #2330880) | Cod sursa (job #1474842) | Cod sursa (job #2222621) | Cod sursa (job #2088488)
#include <iostream>
#include <cstdio>
using namespace std;
const int L = 27;
int v[160001];
int n,i,c,k;
bool sepoate(int c){
int cc = c, nr = 1;
for( int i=0; i < n ;i++ ){
if( v[i] > c )
return false;
if( v[i] > cc ){
nr++;
cc = c;
}
cc = cc - v[i];
if( nr > k )
return false;
}
return true;
}
int main()
{
FILE*fin,*fout;
fin = fopen ( "transport.in", "r" );
fout = fopen ( "transport.out", "w" );
int pas,r;
fscanf ( fin, "%d%d", &n,&k );
for ( i = 0; i < n; i++ )
fscanf (fin, "%d", &v[i]);
r = 0;
pas = 1 << L;
while ( pas != 0 ){
if( !sepoate(r + pas) )
r = r + pas;
pas = pas / 2;
}
fprintf(fout, "%d",r+1 );
return 0;
}