Pagini recente » Cod sursa (job #2570323) | Cod sursa (job #874165) | Cod sursa (job #2872144) | Cod sursa (job #2673951) | Cod sursa (job #3005361)
#include <iostream>
#include <fstream>
using namespace std;
int v[16000];
bool f(int n, int k, int a){
int s=0, cnt=0;
for(int i=1; i<=n; i++){
s+=v[i];
if(s>=a) {cnt++; s=v[i];}
}
cnt++;
if(cnt<=k) return 1;
else return 0;
}
int main()
{
ifstream in("transport.in");
ofstream out("transport.out");
int n, k, i, max1=0, sum=0, st, dr, mij;
in>>n>>k;
for(i=1; i<=n; i++){
in>>v[i];
sum+=v[i];
if(v[i]>max1) max1=v[i];
}
st=max1;
dr=sum;
while(dr-st>1){
mij=(st+dr)/2;
if(f(n, k, mij)==1)
dr=mij;
else st=mij;
}
out<<st;
return 0;
}