Cod sursa(job #1993197)

Utilizator toadehuPuscasu Razvan Stefan toadehu Data 22 iunie 2017 15:46:11
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <fstream>
#include <iostream>

using namespace std;

int saltele[16011];
long long int st=1,d=256000000,mij,n,k,last=-1;


int main()
{
    ifstream fin ("transport.in");
    ofstream fout ("transport.out");
    fin>>n>>k;
    for (int i=1;i<=n;++i)
    {
        fin>>saltele[i];
        if (st<saltele[i])
        {
            st=saltele[i];
        }
    }
    while (st<=d)
    {
        mij=(st+d)/2;
    //cerr<<mij<<"\n";
            int s=0,nr=0;
        for (int i=1;i<=n;i++)
        {
            if (s+saltele[i]<=mij)
            {
                s+=saltele[i];
            }
            else
            {
                s=saltele[i];
                nr++;
            }
        }
        //if (s==saltele[n])
        //{
            nr++;
        //}


        if (nr>k)
        {
            st=mij+1;
        }
        else
        {
            d=mij-1;
            last=mij;
        }
    }
    fout<<last;
}