Cod sursa(job #2699071)

Utilizator divadddDavid Curca divaddd Data 23 ianuarie 2021 16:35:29
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <iostream>
#include <fstream>
#define MAX 160002
using namespace std;
int n,v[MAX],maxim,k,sol,sv;

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

int main()
{
    fin >> n >> k;
    for(int i = 0; i < n; i++){
        fin >> v[i];
        maxim = max(maxim, v[i]);
        sv += v[i];
    }
    int st = maxim, dr = sv;
    while(st <= dr){
        int mid = (st+dr)/2;
        int nr = 1, s = 0;
        for(int i = 0; i < n; i++){
            s += v[i];
            if(s > mid){
                nr++;
                s = v[i];
            }
        }
        /// calculez nr transportuei
        if(nr <= k){
            sol = mid;
            dr = mid-1;
        }else{
            st = mid+1;
        }
    }
    fout << sol << "\n";
    return 0;
}