Cod sursa(job #2831892)

Utilizator antonio_sefu_tauLaslau Antonio antonio_sefu_tau Data 12 ianuarie 2022 13:40:58
Problema Transport Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb

#include <bits/stdc++.h>
#define ll long long

using namespace std;

const int dim = 16005;
ll a[dim], n, k;

ll HowMany(ll cap)
{
    ll trans = 1, s = 0;
    for(ll i = 1; i <= n; i++)
    {
        if(s + a[i] <= cap)
            s += a[i];
        else
            trans++, s = a[i];
    }
    return trans;
}

int main()
{
    ll maxx = -1;
    ifstream f("transport.in");
    ofstream g("transport.out");
    f >> n >> k;
    for(ll i = 1; i <= n; i++)
        f >> a[i], maxx = max(maxx, a[i]);
    ll i;
    for(i = 1; i <= n; i++)
        if(a[i] == maxx)
        break;

    ll left = i, right = 256000000, sol;
    while(left <= right)
    {
        ll mid = (left + right) / 2;
        if(HowMany(mid) <= k)
            right = mid - 1, sol = mid;
        else
            left = mid + 1;
    }
    g << 1LL * sol;
    return 0;
}