Cod sursa(job #2953212)

Utilizator MihneaStoicaMihnea Teodor Stoica MihneaStoica Data 10 decembrie 2022 17:38:17
Problema Transport Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <fstream>
#include <vector>
#define int long long

using namespace std;

ifstream cin ("transport.in");
ofstream cout ("transport.out");

int n, k;
vector<int> v;

bool check(int m)
{
    int s = 0, t = 0;
    for (int i = 1; i <= n; i ++)
    {
        if (s + v[i] <= m)
        {
            s += v[i];
        }
        else
        {
            t ++;
            s = v[i];
        }
    }
    if (s > 0) t ++;
    return t <= k;
}

int32_t main()
{
    cin >> n >> k;
    v.resize(n + 1);
    for (int i = 1; i <= n; i ++)
    {
        cin >> v[i];
    }
    int l = 0, h = 256000000;
    int ans = 0;
    while (l < h)
    {
        int mid = (l + h) / 2;
        if (check(mid))
        {
            h = mid;
            ans = mid;
            //cout << "*";
        }
        else
        {
            l = mid + 1;
        }
        //cout << '\n';
    }
    cout << ans << '\n';
}