Cod sursa(job #2280568)

Utilizator eusebiu.gageaGagea Eusebiu-Andrei eusebiu.gagea Data 10 noiembrie 2018 20:44:39
Problema Transport Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream>

using namespace std;

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

int n, k, v[16001];

int verif(int c) {
    int nr = 0, s, i = 1;
    while(i <= n)
    {
        s = 0;
        while(s + v[i] <= c)
        {
            s += v[i];
            i++;
        }
        nr++;
    }
    if(nr == k)
        return 0;
    else if(nr < k)
        return -1;
    else return 1;
}

int main()
{
    int i, maxi = 0, s = 0, st, dr, mij;
    fin>>n>>k;
    for(i = 1; i <= n; i++)
    {
        fin>>v[i];
        if(v[i] > maxi)
            maxi = v[i];
        s = s + v[i];
    }
    st = maxi;
    dr = s;
    while(st < dr) {
        mij = (st + dr) / 2;
        if(verif(mij) <= 0)
            dr = mij - 1;
        else
            st = mij + 1;
    }
    fout<<(st+dr)/2;
    return 0;
}