Pagini recente » Cod sursa (job #2493093) | Cod sursa (job #2609855) | Cod sursa (job #1116267) | Cod sursa (job #688674) | Cod sursa (job #3254110)
#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=1, 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 = 0;
cnt = 1;
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;
}