Cod sursa(job #2088871)

Utilizator SoranaAureliaCatrina Sorana SoranaAurelia Data 15 decembrie 2017 22:57:30
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <cstdio>
using namespace std;

int lg;
int n, k, a[16001];
int numarare(int x)
{
    int nr=1,s=0;
    for(int i=1; i<=n; i++)
    {
        s+=a[i];
        if(s>=x)
        {
            nr++;
            s=0;
        }
    }
    if(nr==k)
        return 1;
    return 0;
}
long long cautbin(long long lg, long long vmin)
{
    long long i, s=0;;
    for(i=100000000000000000;lg!=0;lg>>=1)
        if(i-lg>vmin)
        {
            i-=lg;
            if(numarare(i)==1)
                s=i;
        }

    return s;
}
int main()
{
    freopen("transport.in", "r", stdin);
    freopen("transport.out", "w", stdout);
    scanf("%d %d", &n, &k);
    long long vmin=-1;
    for(int i=1; i<=n; i++)
    {
        scanf("%d", &a[i]);
        if(a[i]>vmin)
            vmin=a[i];
    }
    long long lg;
    lg=1ll<<62;
    printf("%lld",cautbin(lg,vmin));
    return 0;
}