Cod sursa(job #2091121)

Utilizator cristina-criCristina cristina-cri Data 19 decembrie 2017 10:20:44
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <cstdio>

using namespace std;

int n, k,a[16005];

long long NR=268435456;

int verif(long long x)
{
    int nr=0;
    int i=1;
    while(i<=n)
    {
        long long s=0;
        if(s+a[i]<=x && i<=n)
        {
            while(s+a[i]<=x && i<=n)
            {
                s+=a[i];
                i++;
            }
        }
        else
            i++;
        nr++;
    }
    if(nr<=k)
        return 1;
    return 0;
}


long long caut_bin(long long lg)
{
    long long i;
    for(i=NR;lg!=0;lg>>=1)
    {
        if(i-lg>=0 && verif(i-lg)==1)
            i-=lg;
    }
    return i;
}

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", &a[i]);
    }

    printf("%lld",caut_bin(NR));

    return 0;
}