Cod sursa(job #2106824)

Utilizator Hidden.bdBurlacu Doru Hidden.bd Data 16 ianuarie 2018 12:10:21
Problema Transport Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 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; }
    if( k == 1 ) { fout << saltea[s]; 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;

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

    fout << sol;
    return 0;
}