Cod sursa(job #2183553)

Utilizator ardutgamerAndrei Bancila ardutgamer Data 23 martie 2018 11:29:05
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <cstdio>
#include <vector>

using namespace std;

int k,c,n;
vector<int>v;

inline bool verif(int cap)
{
    int cnt = 0;
    int s = 0;
    for(int i = 0 ; i < v.size() ; i++)
    {
        if(s + v[i] <= cap)
            s += v[i];
        else
        {
            s = v[i];
            cnt++;
        }
    }
    cnt++;
    if(cnt <= k)
        return true;
    return false;
}

int main()
{
    freopen("transport.in","r",stdin);
    freopen("transport.out","w",stdout);
    scanf("%d%d",&n,&k);
    int x;
    for(int i = 1 ; i <= n ; i++)
    {
        scanf("%d",&x);
        v.push_back(x);
    }
    int st = 1;
    int dr = 2000000000;
    int med;
    int ans = -1;
    while(st <= dr)
    {
        med = (st+dr)/2;
        if(verif(med))
        {
            dr = med-1;
            ans = med;
        }
        else
            st = med+1;
    }
    printf("%d",ans);
    return 0;
}