Pagini recente » Cod sursa (job #230183) | Cod sursa (job #1925601) | Cod sursa (job #2500349) | Cod sursa (job #626183) | Cod sursa (job #2863667)
#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;
}