Cod sursa(job #895633)

Utilizator DanFodorFODOR Dan Horatiu DanFodor Data 27 februarie 2013 12:02:00
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <fstream>

using namespace std;

int n, x, k, v[16021];

int ok (int m)
{
    int j=1, cap, transp=0;
    while (j<=n)
    {
        cap=0;
        while (cap+v[j]<=m)
            cap+=v[j++];
        transp++;
    }
    if (transp<=k)
        return 1;
    return 0;
}

int main()
{
    ifstream in ("transport.in");
    ofstream out ("transport.out");
    int i, li=0, lf=0;
    int x;
    in>>n>>k;
    for (i=1; i<=n; i++)
    {
        in>>v[i];
        lf+=v[i];
        if (v[i]>li)
            li=v[i];
    }
    while (li<=lf)
    {
        x=(li+lf)/2;
        if (ok(x))
            lf=x-1;
        else
            li=x+1;
        if (ok(x) && !ok(x-1))
            break;
    }
    out<<x;
    return 0;
}