Cod sursa(job #2620663)

Utilizator dumitru123Patularu Mihai dumitru123 Data 29 mai 2020 14:10:54
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
#define nmax 16003
int n,capacitate,v[nmax],capacitate_maxima,suma_saltele,solutie;
int verificare(int Maxx)
{
    int s=0,nr=1;
    for(int i=0; i<=n && nr<=capacitate; ++i)
    {
        s+=v[i];
        if(s>Maxx)
        {
            s=v[i];
            nr++;
        }
    }
    if(nr<=capacitate) return 1;
    return 0;
}
void cautare_binara(int st, int dr)
{
    while(st <= dr)
    {
        int mij = (st+dr)/2;
        if(verificare(mij)==1)
        {
            solutie=mij;
            dr = mij -1;
        }
        else
        {
            st = mij+1;
        }
    }
}
int main()
{
    f>>n>>capacitate;
    for(int i=1; i<=n; ++i)
    {
        f>>v[i];
        suma_saltele+=v[i];
        if(v[i]>capacitate_maxima) capacitate_maxima=v[i];
    }
    cautare_binara(capacitate_maxima,suma_saltele);
    g<<solutie;
    return 0;
}