Cod sursa(job #1550495)

Utilizator radoneNeacsu Radu-Stefan radone Data 13 decembrie 2015 19:53:39
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream h("transport.in");
ofstream g("transport.out");
int f,l,k,n,v[20000],m;

int verificare(int m)
{
    int i=1,nr = 0,s;
    while(i<=n)
    {
        s = 0;
        while(i<=n && s + v[i] <= m)
        {
            s = s + v[i];
            i++;
        }
        nr++;
    }
    if(nr>k)
        return 0;
    return 1;
}

int main()
{
    h>>n>>k;
    for(int i = 1;i<=n;i++)
    {
        h>>v[i];
        l+=v[i];
        if(v[i]>f)
            f = v[i];
    }
    while(f!=l)
    {
        m = (f+l)/2;

        if(verificare(m) == 0)
            f = m+1;
        else
            l = m-1;
    }
    if(verificare(f))
        cout<<f;
    else
        cout<<f+1;
    h.close();
    g.close();
}