Cod sursa(job #2622795)

Utilizator StefansenNegulescu Stefan Stefansen Data 1 iunie 2020 20:58:54
Problema Transport Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include<iostream>
#include<fstream>
#include<algorithm>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");


int main()
{
    int n, k, v[16001], i, l, r, mid, nr_transporturi, vol_transport, rez;
    f>>n>>k;

    for(i=0;i<n;i++)
        f>>v[i];

    l = *max_element(v,v+n);
    r = accumulate(v,v+n,0);
    //cout<<l<<" "<<r;

    while(l <= r)
    {
        mid = l + (r - l)/2;
        nr_transporturi = 1;
        vol_transport = 0;

        for(i=0;i<n;i++)
        {
            if(vol_transport + v[i] > mid)
            {
                vol_transport = v[i];
                nr_transporturi++;
            }
            else
                vol_transport += v[i];
        }

        if(nr_transporturi>k)
            l = mid + 1;
        else
        {
            r = mid - 1;
            rez = mid;
        }

    }

    g<<rez;

    f.close();
    g.close();
    return 0;
}