Cod sursa(job #2361550)
Utilizator | Data | 2 martie 2019 16:43:46 | |
---|---|---|---|
Problema | Transport | Scor | 80 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.89 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
long long v[160001],n,k,s,m,M,K,i,ok,li,ls,x,r,R,Max;
int main ()
{
fin >> n >> k;
s = Max = 0;
for(i = 1; i <= n; i++)
{
fin >> v[i];
s += v[i];
if(v[i] > Max)
Max = v[i];
}
li = Max;
ls = s;
ok = 0;
while(li <= ls)
{
m = (li+ls)/2;
M = m;
K = 1;
i = 1;
while(i <= n)
{
if(m-v[i] >= 0)
{
m -= v[i];
i++;
}
else
{
K++;
m = M;
}
}
if(K == k)
R = M;
if(K <= k)
ls = M-1;
else
li = M+1;
}
fout << R;
return 0;
}