Cod sursa(job #2159213)

Utilizator mirelPmirel p mirelP Data 10 martie 2018 20:07:47
Problema Transport Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.54 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;
int main()
{
    fin>>n>>k;
    for(i=1;i<=n;i++)
        {
            fin>>v[i];
             if(cmax<v[i])
                cmax=v[i];
        }
    st=cmax;
    dr=16001;
    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;
    }/*
    for(j=a;j>=cmax;j--)
    {
        s=0;
        cnt=0;
        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)
                    a=j;
    }*/
    fout<<a;

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