Cod sursa(job #2071917)

Utilizator TheNextGenerationAyy LMAO TheNextGeneration Data 21 noiembrie 2017 10:11:55
Problema Transport Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <bits/stdc++.h>

using namespace std;

const int NMAX = 16000;
ifstream in("transport.in");
ofstream out("transport.out");

int v[NMAX+5];

int main()
{
    int n,k,sum=0,Max=-1;
    in >> n >> k;
    for (int i = 1; i<=n; i++)
    {
        in >> v[i];
        Max = max(Max,v[i]);
        sum+=v[i];
    }
    int st = Max, dr = sum, mj, cnt, mx,Min = sum;
    while (st<=dr)
    {
        mx = 0;
        mj = (st+dr)/2;
        cnt = 1;
        sum = 0;
        for (int i = 1; i<=n; i++)
        {
            sum+=v[i];
            if (sum>mj)
            {
                cnt++;
                mx = max(mx,sum-v[i]);
                sum = v[i];
            }
        }
        if (cnt>k)
            st = mj+1;
        else
        {
            dr = mj-1;
            Min = min(Min,mx);
        }
    }
    out << Min;
}