Pagini recente » Cod sursa (job #1643683) | Cod sursa (job #2422442) | Cod sursa (job #3031275) | Cod sursa (job #890683) | Cod sursa (job #727147)
Cod sursa(job #727147)
#include <fstream>
using namespace std;
int n, k;
int a[16000];
bool ok(int cap) {
int c = 0;
for(int i = 0; i < n; ++i) {
if(a[i] > cap)
return true;
int sum = a[i];
while(i < n - 1 && sum + a[i + 1] <= cap)
sum += a[++i];
if(++c > k)
return true;
}
return false;
}
int main(void) {
ifstream fin("transport.in");
fin >> n >> k;
int s = 0;
for(int i = 0; i < n; ++i) {
fin >> a[i]; s += a[i];
}
fin.close();
int step, cap;
for(step = 1; step < s; step <<= 1) {}
for(cap = -1; step != 0; step >>= 1)
if(cap + step < s && ok(cap + step))
cap += step;
ofstream fout("transport.out");
fout << cap + 1;
fout.close();
}