Pagini recente » Cod sursa (job #3040582) | Cod sursa (job #1088619) | Cod sursa (job #334881) | Cod sursa (job #1661015) | Cod sursa (job #1430069)
#include <iostream>
#include <fstream>
#define nmax 16001
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int v[nmax], maxCamion, sumaMomentana, kMomentan, minCamion, ok = 0, limitL, limitR, sMax;
/*
6 3
7
3
2
3
1
4
*/
int main()
{
int n, k;
f >> n >> k;
for (int i = 1; i <= n; i++) {
f >> v[i];
if (minCamion < v[i]) minCamion = v[i];
sMax += v[i];
}
maxCamion = (sMax + minCamion) / 2;
limitL = minCamion;
limitR = sMax;
while (1) {
for (int i = 1; i <= n; i++) {
sumaMomentana += v[i];
if (sumaMomentana > maxCamion) {
kMomentan++;
sumaMomentana = v[i];
if (i == n) kMomentan++;
}
else if (i == n) kMomentan++;
}
if (kMomentan > k) {
limitL = maxCamion;
maxCamion = (limitL + limitR) / 2;
}
if (kMomentan <= k) {
limitR = maxCamion;
maxCamion = (limitL + limitR) / 2;
}
if (limitL + 1 == limitR) {
g << maxCamion + 1;
return 0;
}
sumaMomentana = 0;
kMomentan = 0;
}
return 0;
}