Pagini recente » Cod sursa (job #1429209) | Cod sursa (job #568784) | Cod sursa (job #1161859) | Borderou de evaluare (job #702905) | Cod sursa (job #3254105)
#include <iostream>
#include <fstream>
using namespace std;
int v[16001];
int main()
{
ifstream in("transport.in");
ofstream out("transport.out");
int n,k,dr=0,st=0, mij, capacitate, sum=0, cnt=0, i;
in>>n>>k;
for (int i=0; i<n; i++){
in>>v[i];
dr=dr+v[i];
if (v[i]>st)st=v[i];
}
v[n]=0;
while ( st <= dr ){
mij = ( st+dr ) / 2;
sum = cnt = 0;
for (i=0; i<n; i++){
if (sum+v[i]<=mij)
sum+=v[i];
else{
sum=v[i];
cnt++;
}
}
if (cnt<=k){
capacitate=mij;
dr=mij-1;
}
else
st=mij+1;
}
out<<capacitate;
return 0;
}