Cod sursa(job #2758088)

Utilizator andreiiorgulescuandrei iorgulescu andreiiorgulescu Data 8 iunie 2021 16:12:38
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <bits/stdc++.h>

using namespace std;

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

int n,k,a[16005];

bool ver(int c)
{
    int t = 1,i,s = 0;
    for (i = 1; i <= n; i++)
    {
        if (s + a[i] > c)
        {
            t++;
            s = 0;
        }
        s += a[i];
    }
    if (t > k)
        return false;
    return true;
}

int main()
{
    int i,st,dr = 0,maxim = 0,mij,sol;
    in >> n >> k;
    for (i = 1; i <= n; i++)
    {
        in >> a[i];
        maxim = max(maxim,a[i]);
        dr += a[i];
    }
    st = maxim;
    while (st <= dr)
    {
        mij = (st + dr) / 2;
        if (ver(mij) == true)
            {
                dr = mij - 1;
                sol = mij;
            }
        else
            st = mij + 1;
    }
    out << sol;
    return 0;
}