Cod sursa(job #2528699)

Utilizator Stefan_BircaBirca Stefan Stefan_Birca Data 22 ianuarie 2020 13:38:30
Problema Transport Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <bits/stdc++.h>

using namespace std;

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

int n, a[16001], k;

int Test(int c)
{
    ///return 1, if(pot impartii vectorul in < k secv
    /// fiecare secv avand s <= c
    int i, s = 0, cnt = 1;
    for(i = 1; i <= n; i++)
    {
        if(a[i] > c) return 0;
        if(s + a[i] <= c) s+=a[i];
        else
        {
            cnt++;
            s = a[i];
        }
    }
    return(cnt <= k);
}

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()
{

    int i;
    cin >> n >> k;
    for(i = 1; i <= n; i++) cin >> a[i];
    cout << CB();

    return 0;
}