Cod sursa(job #2904944)

Utilizator ale_alexia22Burdusel Alexia ale_alexia22 Data 18 mai 2022 18:48:20
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <fstream>
#define NMAX 16005
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
 int n,k,v[NMAX],nrt=0,i,j,tr,vmax,s1,c,s,st,dr,mij;
int transporturi(int capacitate)
{
    int s1=v[1],nt=1;
    for(int i =2 ;i <= n; i++)
        if(s1+v[i] <= capacitate)
        s1+=v[i];
    else
    {
        nt++;
        s1=v[i];
    }
    return nt;
}
int main()
{
    fin>> n >> nrt;
    for(i = 1 ;i <= n; i++)
    {
        fin>>v[i];
        if(v[i]>vmax)
            vmax=v[i];
        s+=v[i];
        /// incerc valorile posibilie pt capacitate
    }
    /// caut binar o solutie pt prob
    ///cu cta capacitatea este mai mare, cu atat nr de transporturi este mai mic
  st=vmax,dr=s;
  while(st<=dr)
    {
        mij=(st+dr)/2;
        ///cate transporturi se fac cu capacitatea mij
        tr= transporturi(mij);
        if(tr > nrt)
            st=mij+1;
        else
        {
            c=mij;
            dr=mij-1;
        }
    }
    fout<<c;

}