Cod sursa(job #3038239)

Utilizator ionicaion ionica Data 27 martie 2023 08:50:37
Problema Transport Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("transport.in");
ofstream fout("transport.out");
int n, k, i, v[16001];

int verif(int c)///verific daca este posibil cu
{///capacitatea c sa transport toate saltelele
    /// in maxim k transporturi
    int nr,s;
    nr = 1;
    s= 0;
    for(i = 1; i <= n; i++)
    {
        if(s + v[i] <= c)
            s=s + v[i];
        else
        {

            nr++;
            s = v[i];
        }
    }
    return nr<=k;
}

int main()
{
    int i,vm, st, dr, mij,cm;
    fin >> n >> k;
    vm=0;

    for(i = 1; i <= n; i++)
    {
        fin >> v[i];
        if(v[i]>vm)
           vm=v[i];
    }
    ///se cere capacitatea minima a camionului pentru a efectua maxim k transporturi
    st = vm;///sa incapa si cea mai voluminoasa saltea
    dr = 256001;///un singur transport
    cm=-1;
    while(st <= dr)
    {
        mij = (dr + st) / 2;
        if(verif(mij))
        {
            cm= mij;
            dr = mij-1;
        }
        else
            st = mij + 1;
    }
    fout << cm;

    return 0;
}