Cod sursa(job #2080239)

Utilizator FaneCelMareStefan FaneCelMare Data 2 decembrie 2017 17:12:06
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <stdio.h>
int v[16001];
using namespace std;

int main()
{
    FILE* in = fopen("transport.in", "r");
    FILE* out = fopen("transport.out", "w");
    int n, k, st, dr, i, j, nr, rasp, m;
    st = dr = 0;
    fscanf(in, "%d %d", &n, &k);
    for (i = 0; i < n; i++) {
        fscanf(in, "%d", &v[i]);
        if (v[i] > st) {
            st = v[i];
        }
        dr += v[i];
    }
    nr = 0;
    while(st <= dr) {
        j = 0;
        nr = 0;
        m = (st + dr) / 2;
        for (i = 0; i != n; i++) {
            j += v[i];
            if (j > m) {
                nr++;
                j = v[i];
            }
        }
        nr++;
        if (nr <= k) {
            rasp = m;
        }
        if (nr > k) {
            st = m + 1;
        } else {
            dr = m - 1;
        }
    }
    fprintf(out, "%d", rasp);

    return 0;
}