Cod sursa(job #1027069)

Utilizator CostinVFMI CostinVictorGabriel CostinV Data 12 noiembrie 2013 13:17:11
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    int n, k, *a, st, dr, maxim = 0, s = 0, d, mij;

    ifstream f("transport.in");
    f>>n>>k;
    a = new int[n];

    for(int i=0; i<n; i++)
    {
        f>>a[i];
        if(a[i]>maxim)
            maxim = a[i];

        s = s + a[i];
    }
    f.close();

    st = maxim;
    dr = s;

    while(st<dr)
    {
        d = 1;
        s = 0;
        mij = (st + dr) / 2;
        for(int i=0; i<n; i++)
            if(s + a[i] <= mij)
                s = s + a[i];
            else
            {
                s = a[i];
                d++;
            }

        if(d>k)
            st = mij + 1;
        else
            dr = mij;
    }

    ofstream g ("transport.out");

    g<<st;
    g.close();
    delete a;

    return 0;
}