Pagini recente » Cod sursa (job #195942) | Cod sursa (job #124758) | Cod sursa (job #2502786) | Cod sursa (job #1766559) | Cod sursa (job #2910592)
#include <fstream>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <climits>
#include <ctype.h>
#define MAX 20000000
using namespace std;
//ifstream f("in.in");
//ofstream g("out.out");
ifstream f("transport.in");
ofstream g("transport.out");
int n,k,v[16005];
bool solveForC(int c){
int ind=n,sum=0,cnt=0;
while(ind>0){
sum=0;
while(sum + v[ind] <= c && ind>0){
sum+=v[ind];
ind--;
}
cnt++;
}
if(cnt<=k){
return 1;
}
return 0;
}
int main(){
f>>n>>k;
int maxi=-1;
for(int i=1;i<=n;i++){
f>>v[i];
maxi = max(maxi,v[i]);
}
int st=maxi,dr=INT_MAX,sol;
while(st<=dr){
int mij = (1ll*st+1ll*dr)/2;
if(solveForC(mij)==1){
dr = mij-1;
sol = mij;
}else{
st = mij+1;
}
}
g<<sol;
f.close();
g.close();
return 0;
}