Cod sursa(job #1714570)

Utilizator raresm44vasile rares raresm44 Data 8 iunie 2016 18:13:28
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <iostream>
#include <fstream>
int k,n,m,v[16001],x,sumavol,maxim;
using namespace std;

bool verif(int vol)
{
    int tr=0, c = 0;
    for(int i=1; i<=n; i++)
    {
        /*
        int vol=0;
        while(vol+v[i]<=x && i<=n)
            vol+=v[i];
        tr++;
        */
        if (v[i] > c)
        {
            c = vol;
            tr++;
        }
        c -= v[i];
    }
    if(tr<=m)
        return 1;
    return 0;
}

int cautbin()
{
    int pas=1<<28;
    int x=maxim;
    while(pas)
    {
        if(!verif(x+pas))
            x+=pas;
        pas/=2;
    }
    return 1 + x;
}

int main()
{
    ifstream f("transport.in");
    ofstream g("transport.out");
    f>>n>>m;
    for(int i=1; i<=n; i++)
    {
        f>>v[i];
        if (v[i] > maxim)
            maxim=v[i];
        sumavol+=v[i];
    }
    g<<cautbin();
    //cout << "Hello world!" << endl;
    return 0;
}