Pagini recente » Cod sursa (job #464370) | Cod sursa (job #2162774) | Cod sursa (job #1895149) | Cod sursa (job #1912171) | Cod sursa (job #804897)
Cod sursa(job #804897)
#include <iostream>
#include <fstream>
using namespace std;
int N, K;
int V[16010];
bool is_possible (int C) {
int nr=1, cap=0;
for(int i=1; i<=N; i++){
if(V[i]>C)
return 0;
if(cap+V[i]<=C)
cap+=V[i];
else{
nr++;
cap=V[i];
}
}
if(nr<=K)
return 1;
return 0;
}
int main () {
ifstream fin ("transport.in");
ofstream fout ("transport.out");
fin>>N>>K;
for(int i=1; i<=N ; i++)
fin>>V[i];
/*
for(int j=1; ; j++){
if(is_possible (j)==1){
fout<<j;
break;
}
}*/
int sol,st=1, dr=2000000000, mij;
while(st<=dr){
mij=(st+dr)/2;
if(is_possible (mij)){
sol=mij;
dr=mij-1;
}
else{
st=mij+1;
}
}
fout<<sol;
return 0;
}