Cod sursa(job #2714155)

Utilizator MihaiIonescuIonescu Andrei Mihai MihaiIonescu Data 1 martie 2021 13:07:34
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n, k, v[16005], i, maxi, st, dr;
int simulare(int cap) {
    long long s = 0;
    int t = 0;
    for (int i = 1;i <= n;i++){
        s += v[i];
        if (s > cap) {
            t++;
            s = v[i];
        }
        if (t > k)
            return 0;
    }
    t++;
    if (t <= k) {
        return 1;
    }
    return 0;
}
int main() {
    fin>>n>>k;
    int  s = 0;
    for (i = 1;i <= n;i++) {
        fin>>v[i];
        s += v[i];
        if (v[i] > maxi)
            maxi = v[i];
    }
//    for (i = maxi;;i++) {
//        if (simulare(i)) {
//            fout<<i;
//            return 0;
//        }
//      }
    st = maxi;
    dr = s;
    while (st <= dr){
        int mid = (st + dr) / 2;
        if (simulare(mid) == 0) {
            st = mid + 1;
        }
        else
            dr = mid - 1;
    }
    fout<<st;
}