Cod sursa(job #2091122)

Utilizator cristina-criCristina cristina-cri Data 19 decembrie 2017 10:22:24
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <cstdio>

using namespace std;

int n, k,a[16005],vmax;

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>=vmax && 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]);
        if(a[i]>vmax)
            vmax=a[i];
    }

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

    return 0;
}