Cod sursa(job #1428988)

Utilizator eu3neuomManghiuc Teodor-Florin eu3neuom Data 5 mai 2015 14:27:14
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int NMax = 16005;
int v[NMax];

int main(){
    int n,k,m = 0;
    fin >> n >> k;
    for(int i = 1; i <= n; i++){
        fin >> v[i];
        m = max(m, v[i]);
    }
    int lo = m;
    int hi = NMax * NMax;
    while(lo <= hi){
        int mid = (lo + hi) / 2;
        int lim = 1;
        int sum = mid - v[1];
        for(int i = 2; i <= n; i++){
            if(v[i] <= sum){
                sum -= v[i];
            } else {
                sum = mid - v[i];
                lim++;
            }
        }
        if(lim <= k){
            hi = mid - 1;
        } else {
            lo = mid + 1;
        }
    }
    fout << lo;
    return 0;
}