Cod sursa(job #1343535)

Utilizator iulianrotaruRotaru Gheorghe-Iulian iulianrotaru Data 15 februarie 2015 16:24:42
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include<cstdio>
int n, k, a[16002];
bool ok(int x)
{   int cx=x, nrt=1;
    for(int i=1; i<=n; ++i)
    {   if (a[i]>cx) return false;
        if (a[i]>x)
        {   ++nrt;
            if(nrt>k) return false;
            x=cx-a[i];
            continue;
        }
        x -= a[i];
    }
    return true;
}
int cautbin()
{   int i, pas=1<<28;
    for(i=0; pas; pas >>= 1)
        if(!ok(i+pas)) i += pas;
    return i+1;
}
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("%d\n", cautbin());
    return 0;
}