Cod sursa(job #1659028)

Utilizator NineshadowCarapcea Antonio Nineshadow Data 21 martie 2016 22:27:11
Problema Transport Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int n , v[16000], k, _max;
int check(int c)
{
    int x, t=0;
    for(int j = 0; j <n; ++j)
    {
        if(v[j] > c)
            return 0;
        if(x+v[j] <= c)
            x+=v[j];
        else
        {
            ++t;
            x=v[j];
        }
    }
    if(t<=k) return 1;
    return 0;
}
void read()
{
    in >> n >> k;
    for(int i = 0; i < n; ++i)
        {
            in >> v[i];
            if(v[i] > _max) _max = v[i];
        }

}
int main()
{
    read();
    int st= _max, dr = 1000000, mij, r;
    while(st<=dr)
    {
        cout << st << ' ' << dr << endl;
        mij = (st+dr)/2;
        if(check(mij))
        {
            dr = mij-1;
            r = mij;
        }
        else
            st = mij+1;
    }
    out << r;
    return 0;
}