Cod sursa(job #2068239)

Utilizator WeezyAndrei Bogdan Weezy Data 17 noiembrie 2017 14:23:04
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <fstream>

using namespace std;
int n, k;
int a[16001];
int Transport(int C)
{
    int i, nrt, c, s;
    nrt = 0;
    c = C;
    for(i = 1; i <= n; i++)
    {
        c = C;
        while(a[i] <= c)
        {
            c -= a[i];
            i++;
        }
        nrt++;
        i--;
    }
    return nrt;

}
ifstream fin("transport.in");
ofstream fout("transport.out");
int main()
{
    int maxim, suma, i, st, dr, mijl, sol;
    fin >> n >> k;
    maxim = -1;
    suma = 0;
    for(i = 1; i <= n; i++)
    {
        fin >> a[i];
        if(maxim < a[i])
            maxim = a[i];
        suma += a[i];
    }
    st = maxim;
    dr = suma;
    while(st <= dr)
    {
        mijl = (dr + st) / 2;
        if(Transport(mijl) <= k)
        {
            sol = mijl;
            dr = mijl - 1;
        }
        else
        st = mijl + 1;

    }
    fout << sol;
    fin.close();
    fout.close();
    return 0;
}