Cod sursa(job #2779420)

Utilizator KarinaDKarina Dumitrescu KarinaD Data 3 octombrie 2021 17:49:27
Problema Transport Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>

using namespace std;

const int N = 16000;
int v[ N ];

int main() {
    
    ifstream fin ( "transport.in" );
    ofstream fout ( "transport.out" );
    
    int n, t, i, st, dr, mij, s, ok, tr;
    
    fin >> n >> t;
    
    for ( i = 0; i < n; i++ )
        fin >> v[ i ];
    
    st = 0;
    dr = N * N;
    
    while ( dr - st > 1 ){
        
        mij = ( st + dr ) / 2;
        i = 0;
        ok = 0;
        tr = 0;
        
        while ( i < n ){
            
            s = 0;
            
            while ( s + v[ i ] <= mij && i < n ){
                s += v[ i ];
                i++;
            }
            
            if ( v[ i ] > mij ){
                ok = 1;
                i++;
            }
            
            tr++;
        }
        
        if ( tr > t || ok == 1 )
            st = mij + 1;
        else
            dr = mij;
    }
    
    fout << st;
    
    return 0;
}