Cod sursa(job #2387784)

Utilizator Mihai.MocanuMihai mmm Mihai.Mocanu Data 25 martie 2019 11:16:39
Problema Transport Scor 100
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

int n, v[16000], k;

bool se_poate(int c)
{
    int nrt = 0, cc = 0;
    for (int i = 0; i < n; i++)
    {
        if (v[i] > c)
            return false;
        if (v[i] > cc)
        {
            cc = c;
            nrt++;
        }
        cc -= v[i];
    }
    return (nrt <= k);
}


int main()
{
    FILE *fin, *fout;
    fin = fopen("transport.in", "r");
    fout = fopen("transport.out", "w");
    fscanf(fin, "%d%d", &n, &k);
    int r = 0, pas = 1 << 28, i;
    for (i = 0; i < n; i++)
        fscanf(fin, "%d", &v[i]);
    while (pas > 0)
    {
        if (!se_poate(r + pas))
        {
            r += pas;
        }
        pas /= 2;
    }
    fprintf(fout, "%d", r + 1);
    fclose(fin);
    fclose(fout);
    return 0;
}