Cod sursa(job #1550487)

Utilizator radoneNeacsu Radu-Stefan radone Data 13 decembrie 2015 19:48:06
Problema Transport Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 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 nr = 0,s = 0;
    for(int i=1;i<=n;i++)
    {
        if(v[i]>m || nr>k)
            return 0;
        else if(s+v[i]<=m)
            s+=v[i];
        else
        {
            s = 0;
            nr ++;
        }
    }
    return 1;
}

int main()
{
    int rasp;
    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
        {
            rasp = m;
            l = m-1;
        }
    }
    g<<rasp;
    h.close();
    g.close();
}