Cod sursa(job #3206394)

Utilizator AndreiN96Andrei Nicula AndreiN96 Data 22 februarie 2024 16:18:30
Problema Transport Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>

using namespace std;

int N = 16000;

bool incap(int n, int v[], int c, int kmax)
{
    int s = 0;
    for (int i = 0; i < n; i ++)
    {
        s += v[i];
        if (s >= c)
        {
            kmax --;
            s = v[i];
        }
    }
    return (kmax >= 0);
}
int caut_bin(int n, int v[], int st, int dr, int kmax)
{
    int r = dr + 1;
    while (st <= dr)
    {
        int m = (st + dr) / 2;
        if (incap(n, v, m, kmax))
        {
            r = m;
            dr = m - 1;
        }
        else
        {
            st = m + 1;
        }
    }
    return r;
}
int main()
{
    ifstream in("transport.in");
    ofstream out("transport.out");

    int n, k;
    in >> n >> k;
    int v[N];
    for (int i = 0; i < n; i ++)
    {
        in >> v[i];
    }
    out << caut_bin(n, v, 1, N * N, k);

    in.close();
    out.close();

    return 0;
}