Cod sursa(job #1877745)

Utilizator zdavid112zIon David-Gabriel zdavid112z Data 13 februarie 2017 18:18:43
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <cstdio>

using namespace std;

int v[16001];
int n, k;

bool calc(int val)
{
    int nt = 0, tc = 0;
    for(int i = 0; i < n; i++)
    {
        if(tc + v[i] > val)
        {
            tc = v[i];
            nt++;
        }
        else tc += v[i];
    }
    nt++;
    return nt <= k;
}

int main()
{
    int i;
    freopen("transport.in", "r", stdin);
    freopen("transport.out", "w", stdout);
    scanf("%d%d", &n, &k);
    for(i = 0; i < n; i++)
        scanf("%d", v + i);
    int st = 1, dr = 16000 * 16000 + 1, mij, rez;
    while(st <= dr)
    {
        mij = (st + dr) / 2;
        if(calc(mij))
        {
            rez = mij;
            dr = mij - 1;
        }
        else st = mij + 1;
    }
    printf("%d", rez);
    return 0;
}