Cod sursa(job #2863667)
Utilizator | Gorgan Maria mgorgan | Data | 7 martie 2022 02:15:11 |
---|---|---|---|
Problema | Transport | Scor | 80 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.9 kb |
#include <fstream>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
int main()
{
int n, i, k, p, nr, s, gasit, m;
long long u;
cin >> n >> k;
int v[100000];
for (i = 1;i <= n;i++)
cin >> v[i];
p = 1;
u=16000*16000;
//u = 100;
gasit = 0;
while (p <= u)
{
m = (u + p) / 2;
s = 0;
nr = 0;
for (i = 1;i <= n;i++)
{
s = s + v[i];
if (s > m)
{
nr++;
s = v[i];
}
else if (s == m) {
nr++;
s = 0;
}
if (i == n && s>0 && s<=m) nr++;
}
if (nr <= k) {
u = m - 1;
gasit = m;
}
else p = m + 1;
}
cout << gasit;
return 0;
}