Cod sursa(job #2296045)

Utilizator cahemanCasian Patrascanu caheman Data 4 decembrie 2018 10:48:43
Problema Transport Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include<cstdio>

using namespace std;

long long saltele[16005];
int n, k;

int nrcam(long long summax)
{
    int i, nr = 1;
    long long s = 0;
    for(i = 1; i <= n; ++ i)
    {
        s += saltele[i];
        if(s > summax)
        {
            ++ nr;
            s = saltele[i];
        }
    }
    return nr;
}

long long cautbin()
{
    long long st, dr, med, last = 1;
    st = 1;
    dr = (long long) n * 16005;
    while(st <= dr)
    {
        med = ((long long) st + dr) >> 1;
        if(nrcam(med) <= k)
        {
            last = med;
            dr = med - 1;
        }
        else
            st = med + 1;
    }
    return last;
}

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