Pagini recente » Cod sursa (job #1734401) | Cod sursa (job #1487312) | Cod sursa (job #1177404) | Cod sursa (job #973698) | Cod sursa (job #1470893)
#include <iostream>
#include <fstream>
using namespace std;
int n, v[16000], k;
int vezi(int x) {
int i, j, s, t;
i = t = 0;
j = 1;
s = v[i];
while (t < k && j < n) {
s += v[j];
if (s > x){
s = 0;
i++;
j = i + 1;
t++;
}
else
j++;
}
if (t>=k)
return 1;
else
return 0;
}
int main(){
ifstream f("transport.in");
ofstream g("transport.out");
int i, lo = 0, hi = 0, mid, x;
f >> n >> k;
for (i = 0; i < n; ++i) {
f >> v[i];
if (lo < v[i])lo = v[i];
hi += v[i];
}
while (hi - lo > 1){
mid = (lo + hi) / 2;
x = vezi(mid);
if (x)
lo = mid;
else
hi = mid;
}
if (vezi(lo)==0)
g << lo;
else
g << hi;
f.close();
g.close();
return 0;
}