Cod sursa(job #2106788)

Utilizator Hidden.bdBurlacu Doru Hidden.bd Data 16 ianuarie 2018 11:07:23
Problema Transport Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("transport.in");
ofstream fout("transport.out");

int main()
{
    int s, k, saltea[16002];
    int st, dr , mid;
    int x, trs, kk;
    int sol, mx = -1;

    fin >> s >> k;
    for( int i = 1 ; i <= s ; ++i ){
        fin >> x;
        if( x > mx ) mx = x;
        saltea[i] = saltea[i-1] + x;
    }
    saltea[s+1] = 2000000000;
    if( k >= s ) { fout << mx; return 0; }

    st = 1; dr = 2000000000;
    while( dr - st > 1 ){
        mid = st + ( dr - st ) / 2;
        kk = mid;
        trs = 1;
        for( int i = 1 ; i <= s ; ++i ){
            if( saltea[i] > kk ){
                ++trs;

                kk = mid + saltea[i-1];
            }
        }
    //cout << trs << " ";
        if( trs <= k ){
            sol = mid;
            dr = mid;
        }
        else st = mid;
    }

    fout << sol;
    return 0;
}