Cod sursa(job #2528704)

Utilizator Sebi_MafteiMaftei Sebastioan Sebi_Maftei Data 22 ianuarie 2020 13:39:16
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("transport.in");
ofstream fout("transport.out");

int a[16005], n, m;

int Test(int c)
{
    int s = 0, cnt = 1;
    for (int i = 1; i <= n; i++)
    {
        if (a[i] > c)
            return 0;
        if (s + a[i] <= c)
            s += a[i];
        else
        {
            s = a[i];
            cnt++;
        }
    }
    return (cnt <= m);
}

int CB()
{
    int st, dr, mij, p;
    st = 1; dr = 256000000;
    p = 1;
    while (st <= dr)
    {
        mij = (st + dr) / 2;
        if (Test(mij) == 1)
        {
            p = mij;
            dr = mij - 1;
        }
        else st = mij + 1;
    }
    return p;
}

int main()
{
    fin >> n >> m;
    for (int i = 1; i <= n; i++)
            fin >> a[i];
    fout << CB();
    return 0;
}