Cod sursa(job #3344268)

Utilizator stefan210021Ungureanu Stefan stefan210021 Data 1 martie 2026 19:27:36
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <fstream>

using namespace std;

int N,K,st[16001];



ifstream fin("transport.in");
ofstream fout("transport.out");

int nrDrumuri(int camion)
{
    int nr_drumuri=0,nr_saltele=0;
    while(nr_saltele<N)
    {
        //incepem sa bagam saltele in camion
        int cap_ocupata=0;
        while(nr_saltele<N && cap_ocupata+st[nr_saltele+1]<=camion)
        {
            cap_ocupata+=st[nr_saltele+1];
            nr_saltele++;
        }
        // camionul s a umplut deci facem un transport
        nr_drumuri++;
    }
    return nr_drumuri;
}

int main()
{
    int salt_max=0,suma=0,i;
    fin>>N>>K;
    for(i=1;i<=N;i++)
    {
        fin>>st[i];
        if(st[i]>salt_max)
            salt_max=st[i];
        suma+=st[i];
    }
    int st,dr,mij,best_camion;
    st=salt_max;
    dr=suma;
    while(st<=dr)
    {
        mij=(st+dr)/2;
        int nr_drumuri=nrDrumuri(mij);
        if(nr_drumuri>K)
            st=mij+1;
        else
        {
            best_camion=mij;
            dr=mij-1;
        }



    }
    fout<<best_camion;



    fin.close();
    fout.close();

    return 0;
}