Cod sursa(job #2361573)

Utilizator abcdefggVinti test abcdefgg Data 2 martie 2019 16:57:33
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 = R = 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;
}