Pagini recente » Cod sursa (job #213895) | Cod sursa (job #9117) | Cod sursa (job #2091106) | Cod sursa (job #254576) | Cod sursa (job #2088489)
#include <iostream>
#include <fstream>
int const L=27;
using namespace std;
int v[16000],a[16000];
ifstream in("transport.in");
ofstream out("transport.out");
int n,k;
bool p(int c){
int i,cc=c,nr;
for(i=0; i<n; i++){
if(v[i] > c)
return false;
if(v[i] > cc){
nr++;
cc=c;
}
cc-=v[i];
if(nr > k)
return false;
}
return true;
}
int main(){
int i,pas,r=0;
in>> n >> k;
for(i=0; i<n; i++)
in>> v[i];
pas = 1<<L;
while( pas != 0 ){
if( !p(r+pas) )
r+=pas;
pas/=2;
}
out<<r+1;
return 0;
}