Cod sursa(job #3210288)

Utilizator Programmer0101Tudor Oancea Programmer0101 Data 5 martie 2024 20:51:24
Problema Transport Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>

using namespace std;

ifstream cin("transport.in");
ofstream cout("transport.out");

bool mergetransportul(int v[], int n, int tmax, int vmax){
    int s=0;
    int ctr=0;
for (int i =1; i<=n;i++){

        if(s+v[i]>vmax){
            ctr++;
            s=0;
           // s=s-vmax;
        }
         s+=v[i];
        if(ctr>=tmax)
            return 0;

}

return 1;

}

const int VMAX = 16e3;

int v[VMAX+1];

int main()
{
    int n,k;

    cin>>n>>k;

    for (int i =1; i<=n;i++){
        cin>>v[i];
    }

    int st=1, dr=VMAX*VMAX, rez = dr+1;

    while(st<=dr){
            int m = (st+dr)/2;
        if(mergetransportul(v,n,k,m))
        {
            rez=m;
            dr=m-1;
        }
        else{
            st=m+1;
        }
    }
    cout<<rez;
    return 0;
}