Mai intai trebuie sa te autentifici.
Cod sursa(job #2764844)
| Utilizator | Data | 22 iulie 2021 21:17:53 | |
|---|---|---|---|
| Problema | Transport | Scor | 80 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.87 kb |
#include <fstream>
using namespace std;
int n, k;
int a[16001];
void read() {
int i;
ifstream f("transport.in");
f >> n >> k;
for (i = 1; i <= n; i++)
f >> a[i];
f.close();
}
bool ok(int x) {
int i, nr = 0, sum = 0;
for (i = 1; i <= n; i++) {
if (sum + a[i] <= x)
sum += a[i];
else {
nr++;
sum = a[i];
}
}
nr++;
if (nr <= k)
return 1;
return 0;
}
int rez;
void solve() {
int st = 1, dr = 16000 * 16000, mij;
while (st <= dr) {
mij = (st + dr) / 2;
if (ok(mij))
dr = mij - 1;
else st = mij + 1;
}
rez = st;
}
void output() {
ofstream g("transport.out");
g << rez;
g.close();
}
int main() {
read();
solve();
output();
return 0;
}