Cod sursa(job #3152409)

Utilizator asparkCostea Andrei Ioan aspark Data 24 septembrie 2023 23:23:46
Problema Transport Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

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

int med, sol, v[16001];

int drum(vector<int> v, int n, int cant){
    int drumuri = 1, vol = 0;
    for(auto i = v.begin(); i != v.end(); i++){
        if(vol + *i <= cant){
            vol += *i;
        }
        else{
            vol = *i;
            drumuri++;
        }
    }
    
    return drumuri;
}

void caut(vector<int> v, int y, int n, int k){

    int st = 1, dr = 16000 * 16000;
    int ans = 1;

    while(st <= dr){
        med = (st + dr) / 2;

        if(drum(v, n, med) <= k){
            sol = med;
            dr = med - 1;
        }
        else{
            st = med + 1;
        }
    }

}

int main(){

    int n, k, maxx = -1;
    vector<int> v;
    fin>>n>>k;

    for(int i = n; i >= 1; i--){
        int x;
        fin>>x;
        maxx = max(maxx, x);
        v.push_back(x);
    }

    caut(v, v.back(), n, k);

    fout<<sol;

    return 0;
}