Cod sursa(job #2616187)

Utilizator MSergiu_01Sergiu Mihaila MSergiu_01 Data 16 mai 2020 21:27:44
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream fin("transport.in");
ofstream fout("transport.out");

int n, k, volum[16001];

int main()
{
    long long suma = 0, MAX = 0;
    fin >> n >> k;
    for(int i = 0; i < n; i++)
    {
        fin >> volum[i];
        suma += volum[i];
        if(volum[i] > MAX)
        {
            MAX = volum[i];
        }
    }
    long long int st = MAX, dr = suma, m, pmin = 25600000;
    while(dr >= st)
    {
        m = (dr + st)/2;
        long long int s = 0, transport = 0;
        for(int i = 0; i < n; i++)
        {
            s += volum[i];
            if(s > m)
            {
                transport++;
                s = volum[i];
            }

        }
        if(s!=0)
        {
            transport++;
        }
        if(transport <= k)
        {
            if(m < pmin)
            {
                pmin = m;
            }
            dr = m - 1;
        }
        else
            st = m +1;
    }
    fout << pmin;


    return 0;
}