Cod sursa(job #2661415)

Utilizator Alex_tz307Lorintz Alexandru Alex_tz307 Data 21 octombrie 2020 23:09:47
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
	
#include <bits/stdc++.h>

using namespace std;
 
ifstream fin("transport.in");
ofstream fout("transport.out");
 
int main() {
    fin.sync_with_stdio(false);
    fout.sync_with_stdio(false);
    fin.tie(nullptr);
    fout.tie(nullptr);
    int N, K;
    fin >> N >> K;
    vector < int > a(N);
    int sum = 0;
    for(int& x : a)
        fin >> x, sum += x;
    int st = 0, dr = sum + 1, ans = sum + 1;
    while(st <= dr) {
        int mid = (st + dr) >> 1;
        int cnt = 1;
        sum = 0;
        for(int x : a) {
            if(x > mid) {
                cnt = K + 1;
                break;
            }
            if(sum + x <= mid)
                sum += x;
            else {
                sum = x;
                ++cnt;
            }
            if(cnt > K)
                break;
        }
        if(cnt <= K) {
            ans = mid;
            dr = mid - 1;
        }
        else 
            st = mid + 1;
    }
    fout << ans;
}