Cod sursa(job #1659040)

Utilizator NineshadowCarapcea Antonio Nineshadow Data 21 martie 2016 22:37:44
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int n , v[16000], k, _max, w;
int check(int c)
{
    int x=0, t=1;
    for(int i = 0; i < n; ++i)
    {
        if(x+v[i] <= c)
            x+=v[i];
        else
        {
            ++t;
            x=v[i];
        }
    }
    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];
            w+=v[i];
        }

}
int main()
{
    read();
    int st= _max, dr = w, 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;
}