Cod sursa(job #2664047)

Utilizator LucaMihaiLM10Luca Ilie LucaMihaiLM10 Data 27 octombrie 2020 20:23:21
Problema Transport Scor 100
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <stdio.h>
#define MAX_N 16000
#define MAX_VOL 16000
int vol[MAX_N];
int main() {
    FILE *fin, *fout;
    int n, k, maxVol, sumaVol, s, t, st, dr, mij, i;
    fin = fopen( "transport.in", "r" );
    fscanf( fin, "%d%d", &n, &k );
    maxVol = sumaVol = 0;
    for ( i = 0; i < n; i++ ) {
        fscanf( fin, "%d", &vol[i] );
        if ( vol[i] > maxVol )
            maxVol = vol[i];
        sumaVol += vol[i];
    }
    fclose( fin );
    st = maxVol - 1;
    dr = sumaVol;
    while ( dr - st > 1 ) {
        mij = (st + dr) / 2;
        t = 1;
        s = 0;
        for ( i = 0; i < n; i++ ) {
            if ( s + vol[i] > mij ) {
                s = 0;
                t++;
            }
            s += vol[i];
        }
        if ( t > k )
            st = mij;
        else
            dr = mij;
    }
    fout = fopen( "transport.out", "w" );
    fprintf( fout, "%d", dr );
    fclose( fout );
    return 0;
}