Mai intai trebuie sa te autentifici.
Cod sursa(job #3364677)
| Utilizator | Data | 9 septembrie 2026 07:59:44 | |
|---|---|---|---|
| Problema | Transport | Scor | 80 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.86 kb |
#include <bits/stdc++.h>
using namespace std;
#define int long long
ifstream in("transport.in");
ofstream out("transport.out");
const int MX1 = 16 * 1e3;
int n;
int k, cap;
int v[MX1 + 1];
bool fnc(int c) {
//daca merge pentru capacitatea c, incercam cu una mai mica
int cnt, s;
cnt = s = 1;
--s;
for(int i = 1; i <= n; ++i) {
if(v[i] > c)
return false;
s += v[i];
if(s > c)
++cnt, s = v[i];
}
return !(cnt > k);
}
signed main()
{
in >> n >> k;
for(int i = 1; i <= n; ++i)
in >> v[i];
int st, dr, mij;
st = 0, dr = MX1 * MX1;
int ans;
while(st < dr) {
mij = (st + dr) / 2;
if(fnc(mij))
ans = mij, dr = mij - 1;
else
st = mij + 1;
}
out << ans << '\n';
return 0;
}
