Cod sursa(job #1405503)

Utilizator mesinaraduMesina Radu mesinaradu Data 29 martie 2015 12:21:51
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <fstream>
using namespace std;
ifstream fin ("transport.in");
ofstream fout ("transport.out");
int v[16001],i,n,nr,Nr,maxim;
long long s,st,dr,mij,sum,sol;
int main (){
    fin>>n>>Nr;
    for(i=1;i<=n;i++){
        fin>>v[i];
        dr=dr+v[i];
        if(v[i]>maxim)
            maxim=v[i];
    }
    st=maxim;
    //caut binar capacitatea camionului in intervalul max-dr
    while(st<=dr){
        mij=(st+dr)/2;
        //determina nr de trans pe vor fi executate daca capacitatea camionuli-mij
        nr=1;
        s=0;
        for(i=1;i<=n;i++)
            if(s+v[i]<=mij)
                s+=v[i];
            else{
                s=v[i];
                nr++;
            }
            if(nr<=Nr){
                sol=mij;
                dr=mij-1;
            }
            else{
                st=mij+1;
            }
        }

    fout<<sol;

    return 0;
}