Cod sursa(job #2002258)

Utilizator CMCmasterCatalin Costescu CMCmaster Data 19 iulie 2017 10:58:12
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>

using namespace std;

ifstream in("transport.in");
ofstream out("transport.out");

int v[16001];

int main()
{
    int n,k,i;

    in>>n>>k;
    for(i=0;i<n;i++)
        in>>v[i];

    bool found = false;
    int li = 1,ls = 16000 * k,mid,t,s,lastr = 0,lastmid = 0;

    while(!found)
    {
        mid = (li+ls) / 2;

        t=s=0;
        for(i=0;i<n;i++)
        {
            if(v[i] > mid) {t = 16001;break;}
            s+=v[i];
            if(s > mid)
            {
                t++; s = 0;
            }
        }

        if(t<=k)
        {
            ls = mid;
            lastr = t;
            lastmid = mid;
        }
        if(t > k)
        {
            li = mid;

            if(lastr > 0)
            {
                out<<lastmid;
                return 0;
            }
        }
    }

    return 0;
}