Cod sursa(job #3206000)

Utilizator CosminaneBoac Mihai Cosmin Cosminane Data 21 februarie 2024 12:45:58
Problema Transport Scor 100
Compilator cpp-32 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <bits/stdc++.h>
using namespace std;
int n, v[16005];
int transporturi( int cap ){
    int r, s, i;
    s = cap;
    r = 1;
    for( i = 0; i < n; i++ ){
        s -= v[i];
        if( s < 0 ){
            s = cap - v[i];
            r++;
        }
    }
    return r;
}
int main(){
    int k, i, stanga, dreapta, mijloc;
    ifstream fin( "transport.in" );
    ofstream fout( "transport.out" );
    fin >> n >> k;
    stanga = 0;
    for( i = 0; i < n; i++ ){
        fin >> v[i];
        if( v[i] > stanga ){
            stanga = v[i];
        }
    }
    stanga--;
    dreapta = 256000000;
    while( dreapta - stanga > 1 ){
        mijloc = ( stanga + dreapta ) / 2;
        if( transporturi( mijloc ) > k ){
            stanga = mijloc;
        }
        else{
            dreapta = mijloc;
        }
    }
    fout << dreapta;
    return 0;
}