Cod sursa(job #895660)

Utilizator DanFodorFODOR Dan Horatiu DanFodor Data 27 februarie 2013 12:07:41
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 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, a;
    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;
        a=ok(x);
        if (a)
            lf=x-1;
        else
            li=x+1;
        if (a)
            if (!ok(x - 1))
            break;
    }
    out<<x;
    return 0;
}