Cod sursa(job #2159230)

Utilizator mirelPmirel p mirelP Data 10 martie 2018 20:18:57
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <fstream>

using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");

int v[16005],cmax,n,i,j,k,med,st,dr,a,cnt,s,s2;
int main()
{
    fin>>n>>k;
    for(i=1;i<=n;i++)
        {
            fin>>v[i];
             if(cmax<v[i])
                cmax=v[i];
                s2+=v[i];
        }
    st=cmax;
    dr=s2;
    while(st<=dr)
    {
        cnt=0;
        s=0;
        med=(st+dr)>>1;
        for(i=1;i<=n;i++)
                {
                    if(v[i]+s<=med)
                    s=s+v[i];
                    else
                    {
                        cnt++;
                        s=v[i];
                        if(cnt>k)
                            break;
                    }

                }
            if(s)
                cnt++;
            if(cnt>k)
            st=med+1;
            else
            {
                a=med;
                dr=med-1;
            }

     //fout<<med<<endl;
    }

    fout<<a;

    fin.close();
    fout.close();
    return 0;
}