Cod sursa(job #3206395)

Utilizator AndreiN96Andrei Nicula AndreiN96 Data 22 februarie 2024 16:23:52
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 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 ++)
    {
        if (v[i] > c)
        {
            return false;
        }
        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;
}