Pagini recente » Cod sursa (job #1921991) | Cod sursa (job #1905177)
#include <fstream>
#include <cstring>
#include <cmath>
using namespace std;
ifstream is ("transport.in");
ofstream os ("transport.out");
int n, k, v[16001],i,suma,st,dr,capacitate,t;
int main()
{
int max = 0;
is >> n >> k;
for(i=0;i<n;i++){
is >> v[i];
suma += v[i];
if(max < v[i]){
max = v[i];
}
}
st = max;
dr = suma;
suma = 0;
while (st<=dr){
capacitate = (st + dr)/2;
t = 1;
suma =0;
for (i=0;i<n;i++){
if (suma + v[i] <= capacitate){
suma += v[i];
}else{
suma =v[i];
t++;
}
}
if (t <= k){
dr = capacitate - 1;
}else{
st = capacitate + 1;
}
}
os << st;
}