Pagini recente » Cod sursa (job #2043086) | Cod sursa (job #1779159) | Cod sursa (job #668555) | Cod sursa (job #2366174) | Cod sursa (job #3005580)
#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize("O2")
#define N 16000
int v[N];
bool check(int n, int k, int x) {
int part_sum = 0;
int cnt = 0;
for (int i = 1; i <= n; ++i) {
part_sum += v[i];
if (part_sum >= x) {
cnt++;
part_sum = v[i];
}
}
cnt++;
if (cnt <= k)
return 1;
return 0;
}
int main(void)
{
int n, k, sum = 0, maxi = -1;
ifstream fin("transport.in");
fin >> n >> k;
for (int i = 1; i <= n; ++i) {
fin >> v[i];
if (v[i] > maxi)
maxi = v[i];
sum += v[i];
}
fin.close();
int st = maxi;
int dr = sum;
int mij;
while (st < dr - 1) {
mij = (dr - st) / 2 + st;
if (check(n, k, mij))
dr = mij;
else st = mij;
}
ofstream fout("transport.out");
fout << st;
fout.close();
return 0;
}