Cod sursa(job #2071928)

Utilizator TheNextGenerationAyy LMAO TheNextGeneration Data 21 noiembrie 2017 10:22:44
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 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, Min;
    while (st<=dr)
    {
        mj = (st+dr)/2;
        cnt = 1;
        sum = 0;
        for (int i = 1; i<=n; i++)
        {
            if (sum+v[i]>mj)
            {
                cnt++;
                sum = 0;
            }
            sum+=v[i];
        }
        if (cnt>k)
            st = mj+1;
        else
        {
            dr = mj-1;
            Min = mj;
        }
    }
    out << Min;
}