Cod sursa(job #2976564)

Utilizator VINTREXNume complet VINTREX Data 9 februarie 2023 15:39:26
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <fstream>

using namespace std;

ifstream cin ("transport.in");
ofstream cout ("transport.out");
int v[16001];
int main()
{
    int n, k, c, st, dr, m, i, max = 0, sum = 0, k_verif, sum_c = 0;
    cin >> n >> k;
    for (i = 1;i <= n;i++)
    {
        cin >> v[i];
        if (v[i] > max)
        {
            max = v[i];
        }
        sum = sum + v[i];
    }
    st = max;
    dr = sum;
    while (st <= dr)
    {
        m = (st + dr) / 2;
        k_verif = 0;
        sum_c = 0;
        for (i = 1;i <= n;i++)
        {
            sum_c = sum_c + v[i];
            if (sum_c > m)
            {
                sum_c = 0;
                i--;
                k_verif++;
            }
            if (i == n && sum_c < m)
            {
                k_verif++;
            }
        }
        if (k_verif > k)
        {
            st = m + 1;
        }
        else if (k_verif <= k)
        {
            c = m;
            dr = m - 1;
        }
    }
    cout << c;
    return 0;
}