Cod sursa(job #3274303)

Utilizator SimifilLavrente Simion Simifil Data 6 februarie 2025 02:10:45
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");

int main() {
	int n, k;
    f >> n >> k;
    long long v[n+1];
    long long s = 0, maxx = 0;
    for( int i = 1; i <= n; ++i )
    {
        f >> v[i];
        s += v[i];
        maxx = max(maxx, v[i]);
    }
    long long st = maxx, dr = s, mij, ras = s;
    while( st < dr )
    {
        mij = st + (dr-st)/2;
        ///[st, mij] [mij+1, dr]
        int cnt = 0;
        long long q = 0;
        for( int i = 1; i <= n; ++i )
        {
            if( q + v[i] > mij )
                ++cnt, q = 0;
            q += v[i];
        }
        ++cnt;
        //cout << mij << " " << cnt << "\n";
        if( cnt <= k )
            ras = min(mij, ras), dr = mij;
        else
            st = mij+1;
    }
    g << ras;
    return 0;
}