Cod sursa(job #2661289)

Utilizator Fantastic_Mantudor voicu Fantastic_Man Data 21 octombrie 2020 18:40:38
Problema Transport Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <stdio.h>
using namespace std;
const int NMAX = 16000;
int v[NMAX],n;

int transporturi(int k) {
    int cate, i, s;
    cate = 1; s = 0;
    for ( i = 0; i < n; i++ )
        if ( s + v[i] <= k)
            s += v[i];
        else {
            cate++;
            s = v[i];
        }
    return cate;
}

int cb(int x) {
    int pos, step;
    for ( pos = 0, step = (1 << 28); step; step >>= 1)
        if ( transporturi(pos + step) > x )
            pos += step;
    return pos + 1;
}

int main() {
    FILE *fin, *fout;
    int k;
    fin = fopen("transport.in", "r");
    fscanf( fin, "%d%d", &n ,&k );
    for ( int i = 0; i < n; i++ )
        fscanf(fin, "%d", &v[i] );
    fclose( fin );
    
    fout = fopen("transport.out", "w");
    fprintf(fout, "%d\n", cb(k) );
    fclose( fout );
    
    return 0;
}