Cod sursa(job #1521716)

Utilizator claudiu.gatinaFMI Claudiu Gatina claudiu.gatina Data 10 noiembrie 2015 19:47:01
Problema Transport Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <iostream>
#include <fstream>
#define Nmax 16010

using namespace std;

int s, k, n, v[Nmax], c = Nmax*Nmax;

int nrt(int maxCapacity)
{
    int nrTransporturi = 1, currentMass = 0;

    for(int i = 0; i < n; ++i)
    {
        if(v[i] > maxCapacity)
            return c;
        if(currentMass + v[i] > maxCapacity)
        {
            ++nrTransporturi;
            currentMass = v[i];
        }
        else
        {
            currentMass+= v[i];
        }
        if(nrTransporturi > k)
            return c;
    }

    return nrTransporturi;
}

int solve()
{
    for(int i = s/k; i <= s/k + Nmax; ++i)
        if(nrt(i) <= k)
            return i;
}

int main()
{
    fstream f("transport.in", ios::in);
    fstream g("transport.out", ios::out);
    f>>n>>k;
    for(int i = 0; i < n; ++i)
    {
        f>>v[i];
        s+= v[i];
    }


    g<<solve();

    return 0;
}