Cod sursa(job #2107075)

Utilizator Hidden.bdBurlacu Doru Hidden.bd Data 16 ianuarie 2018 18:48:26
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <iostream>
#include <bitset>
#include <cstring>

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 mn = 0, sum = 0;
    
    fin >> s >> k;
    for( int i = 1 ; i <= s ; ++i ){
        fin >> x;
        if( x > mn ) mn = x;
        saltea[i] = x;
        sum += x;
    }
    
    st = mn; dr = sum;
    while( dr - st > 1 ){
        mid = st + ( dr - st ) / 2;
        kk = 0;
        trs = 1;
        for( int i = 1 ; i <= s ; ++i ){
            if( kk + saltea[i] <= mid ){
                kk += saltea[i];
            }else{
                ++trs;
                kk = saltea[i];
            }
        }
        //cout << trs << " ";
        if( trs <= k ) dr = mid;
        else st = mid;
    }
    
    fout << dr;
    return 0;
}