Cod sursa(job #1470351)

Utilizator greenday28stoienescu paul greenday28 Data 10 august 2015 21:24:44
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include<fstream>
using namespace std;
int main()
{
    ifstream in("transport.in");
    ofstream out("transport.out");
    int primul,ultimul,vmax=0,v[16010],n,k,maxim,suma=0,mijloc,nrtransporturi=0;
    in>>n>>k;
    for(int i=1;i<=n;i++)
    {
        in>>v[i];
        suma=suma+v[i];
            if(v[i]>maxim)
            maxim=v[i];
    }
        primul=maxim;
        ultimul=suma;
        while(primul<=ultimul)
        {
            mijloc=(primul+ultimul)/2;
            vmax=mijloc-v[1];
            nrtransporturi=1;
            for(int i=2;i<=n;i++)
            {
                if(vmax>=v[i])
                vmax=vmax-v[i];
                else
                {
                    nrtransporturi++;
                    vmax=mijloc-v[i];
                }
            }
            if(nrtransporturi<=k)
                ultimul=mijloc-1;
            else
                primul=mijloc+1;
        }

        out<<primul;

}