Cod sursa(job #2088490)
Utilizator | Data | 15 decembrie 2017 12:43:14 | |
---|---|---|---|
Problema | Transport | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.57 kb |
#include <iostream>
#include <fstream>
using namespace std;
int const L=27;
int v[16000];
ifstream in("transport.in");
ofstream out("transport.out");
int n,k;
bool p(int c){
int i,cc=c,nr=1;
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;
}