Cod sursa(job #1760392)

Utilizator KusikaPasa Corneliu Kusika Data 20 septembrie 2016 19:03:35
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>

using namespace std;

//ifstream fin("in.txt");
//ofstream fout("out.txt");

vector <int> vol;
int Cmin=0, Cmax=0, C;

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

int binsearch(int x)
{
    int L = Cmin, R = Cmax;
    C = Cmax;

    while (L <= R)
    {
        int cars = 1;
        int mid = (L+R)/2;

        int s = 0;
        for (int i = 0; i < vol.size(); i++)
        {
            s += vol[i];
            if (s > mid) {
                s = vol[i];
                cars++;
            }
        }

        if (cars > x) L = mid + 1;
        else {
            R = mid - 1;
            C = min(C,mid);
        }
    }

    return C;
}

int main()
{
    int n, k;

    fin >> n >> k;
    int x;
    for (int i = 0; i < n; i++)
    {
        fin >> x;
        Cmax += x;
        Cmin = max(Cmin,x);
        vol.push_back(x);
    }

    fout << binsearch(k);

    return 0;
}