Cod sursa(job #2618499)

Utilizator pascustefanPascu Stefan Liviu pascustefan Data 25 mai 2020 12:19:51
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("transport.in");
ofstream g("transport.out");

int n, k, v[16009], ans, maxim, sum;

int main(){
    int i, dr, st, m, pm = 25000000;
    f>>n>>k;
    for(i = 0; i < n; i++){
        f>>v[i];
        sum = sum + v[i];
        if(v[i] > maxim){
            maxim = v[i];
        }
    }

    st = maxim;
    dr = sum;
    long long s, tr;
    while(st <= dr) {
        m = (st + dr) / 2;
        s = 0;
        tr = 0;
        for(i = 0; i < n; i++){
            s = s + v[i];
            if(s > m){
                tr++;
                s = v[i];
            }
        }
        if(s != 0){
            tr++;
        }
        if(tr <= k){
            if(m < pm){
                pm = m;
            }
            dr = m - 1;
        }else st = m + 1;
    }
    g<<pm;
    return 0;
}