Cod sursa(job #2274689)

Utilizator TooHappyMarchitan Teodor TooHappy Data 2 noiembrie 2018 12:21:08
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <bits/stdc++.h>
using namespace std;
 
ifstream in("transport.in");
ofstream out("transport.out");
 
const int MaxVolume = 16005 * 16005;
 
int main() {
 
    int n, k; in >> n >> k;
 
    vector< int > v(n);
    int maxVolMattress = 0;
    for(auto& it: v) {
        in >> it;
        maxVolMattress = max(maxVolMattress, it);
    }
 
    int lo = maxVolMattress, hi = MaxVolume;
    while(lo <= hi) {
        int mid = (lo + hi) >> 1;
        int sumLeft = mid - v[0];
 
        int countTransports = 1;
        for(int i = 1; i < n; ++i) {
            if(v[i] <= sumLeft) {
                sumLeft -= v[i];
            } else {
                countTransports++;
                sumLeft = mid - v[i];
            }
        }
 
        if(countTransports <= k) {
            hi = mid - 1;
        } else {
            lo = mid + 1;
        }
    }
 
    out << lo << '\n';
 
    v.clear();
 
    in.close(); out.close();
 
    return 0;
}