Cod sursa(job #2084876)

Utilizator alexge50alexX AleX alexge50 Data 9 decembrie 2017 12:33:13
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <stdio.h>

const int MAX_N = 16000;

int v[MAX_N];

int GetNumberOfCarriages(int *v, int n, int capacity)
{
    int s = 0;
    int n_carriages = 0;

    for(int i = 0; i < n; i++)
    {
        if(s + v[i] <= capacity)
            s += v[i];
        else
        {
            s = v[i];
            n_carriages ++;
        }
    }

    if(s != 0) n_carriages ++;

    return n_carriages;
}

int main()
{
    FILE *fin = fopen("transport.in", "r"),
         *fout = fopen("transport.out", "w");
    int n, k;

    fscanf(fin, "%d %d", &n, &k);

    for(int i = 0; i < n; i++)
        fscanf(fin, "%d", &v[i]);

    int step = 1 << 28;
    int r = 0;

    printf("%d\n", GetNumberOfCarriages(v, n, 8));

    while(step != 0)
    {
        if(GetNumberOfCarriages(v, n, r + step) > k)
            r += step;
        step /= 2;
    }
    r++;

    fprintf(fout, "%d", r);


    fcloseall();
    return 0;
}