Pagini recente » Cod sursa (job #3031407) | Cod sursa (job #1516103) | Cod sursa (job #2762797) | Cod sursa (job #1564404) | Cod sursa (job #2923088)
#include <fstream>
using namespace std;
int v[16000], n, k, maxim;
bool solutie(int c) {
int i, cnt, camion;
camion = cnt = 0;
for (i = 0; i < n; i++) {
camion += v[i];
if (camion > c) {
camion = v[i];
cnt++;
}
}
cnt++;
return cnt <= k;
}
int cautare(int st, int dr) {
if (st == dr)
return solutie(st) == true ? st : -1;
int mij = (st + dr)/2;
if (solutie(mij))
return cautare(st, mij);
return cautare(mij + 1, dr);
}
int main()
{
ios_base::sync_with_stdio(false);
ifstream fin("transport.in");
ofstream fout("transport.out");
int i, s;
fin >> n >> k;
maxim = 0;
for (i = 0; i < n; i++) {
fin >> v[i];
if (v[i] > maxim)
maxim = v[i];
s += v[i];
}
fout << cautare(maxim, s);
return 0;
}