Cod sursa(job #3296135)

Utilizator razviii237Uzum Razvan razviii237 Data 11 mai 2025 18:24:46
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <fstream>
//#include <iostream>
#include <algorithm>
#include <fstream>

using namespace std;

ifstream cin("transport.in");
ofstream cout("transport.out");
int v[16005], n, k, maxim;
int f(int capacitate) { // returneaza cate transporturi face
    int incarcatura = 0, transporturi = 1;
    for(int i = 1; i <= n; i ++) {
        incarcatura += v[i];
        if(incarcatura > capacitate) {
            transporturi ++;
            incarcatura = v[i];
        }
    }
    return transporturi;
}

int main()
{
    cin >> n >> k;
    for(int i = 1; i <= n; i ++) {
        cin >> v[i];
        if(v[i] > maxim)
            maxim = v[i];
    }
    int st = maxim, dr = 256000000, mij;
    while(st < dr) {
        mij = (st + dr) / 2;
        if(f(mij) <= k)
            dr = mij;
        else
            st = mij + 1;
    }
    cout << st << '\n';
    return 0;
}



// st = 1    dr = 256000000
//while(st < dr) {
//    mij = (st + dr) / 2;
//    if(f(mij) <= k)
//        dr = mij;
//    else
//        st = mij + 1;
//}
//f(x) -> cate transporturi trebuie sa faci
//        daca camionul are capacitate x
//x = 1 -> f(x) = 999
//x = 2 -> f(x) = 600
//x creste -> f(x) scade