Pagini recente » Cod sursa (job #680717) | Cod sursa (job #396598) | Cod sursa (job #3328151) | Cod sursa (job #1233800) | Cod sursa (job #3322151)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int v[16000];
int main()
{
int n, k, smin = 16001, smax = 0, dimensiune = 16000;
fin >> n >> k;
for(int i = 1; i <= n; i ++){
fin >> v[i];
if(v[i] < smin)
smin = v[i];
smax = smax + v[i];
}
int st, dr, mij, k1, ok = 0;
st = smin;
dr = smax;
while(st <= dr){
k1 = 0;
mij = (st + dr)/2;
int spartiala = 0;
for(int i = 1; i <= n; i ++){
spartiala = spartiala + v[i];
if(spartiala > mij){
k1 ++;
spartiala = v[i];
}
}
k1 ++;
if(k1 > k)
st = mij + 1;
else{
if(dimensiune > mij)
dimensiune = mij;
dr = mij - 1;
}
}
fout << dimensiune;
return 0;
}