Cod sursa(job #1248464)

Utilizator Vali_DeaconuVali Deaconu Vali_Deaconu Data 25 octombrie 2014 11:24:49
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int n, k, v[16001], dr, st, mid, i, maxs, s[8001], p, c, sum;

int main()
{
    fin >> n >> k;
    for (i=1; i<=n; i++) {
        fin >> v[i];
        if (v[i] > maxs)
            maxs = v[i];
        sum+=v[i];
    }
    //cout << maxs << "\n";

    //for (c = maxs; ;c++) {
    int st = maxs;
    int dr = sum;
    while (st <= dr) {

        c = st + (dr - st)/2;

        for (i=1;i<=p;i++)
            s[i] = 0;
        p = 1;

        for ( i=1; i <= n; i++ ) {
            if ( s[p] + v[i] > c ) {
                p++;
                s[p] += v[i];
            }
            else {
                s[p] += v[i];
            }
        }
        if (p<=k)
            dr = c-1;
        else
            st = c+1;
    }

    fout<<st;

    fin . close ();
    fout . close ();
    return 0;

}