Cod sursa(job #2091115)

Utilizator ana.pintiliciucAna Maria Pintiliciuc ana.pintiliciuc Data 19 decembrie 2017 10:17:26
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <cstdio>

using namespace std;

int a[16005];
int n,k;

int simulare(long long x)
{
    long long aux=x;
    int ok=1;
    for(int i=1;i<=n;i++)
    {
        if(a[i]>x)
            return 1;
        if(a[i]>aux)
        {
            ok++;
            aux=x;
        }
        aux-=a[i];
    }
    if(ok<=k)
        return 0;
    return 1;
}

long long cautbin()
{
    long long st=0, dr=1LL<<62, mij, pic;
    while(st<=dr)
    {
        mij=(st+dr)/2;
        if(simulare(mij)==0)
        {
            pic=mij;
            dr=mij-1;
        }
        else st=mij+1;
    }
    return pic;
}

int main()
{
    freopen("transport.in", "r", stdin);
    freopen("transport.out", "w", stdout);
    scanf("%d %d", &n, &k);
    for(int i=1;i<=n;i++)
        scanf("%d\n", &a[i]);
    printf("%lld", cautbin());

    return 0;
}