Cod sursa(job #2536949)

Utilizator what__paulStan Paul Gabriel what__paul Data 2 februarie 2020 20:44:50
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<iostream>
#include<fstream>

using namespace std;

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

const int NMAX = 16005;

long long v[NMAX];

int main(){
    int n,k;
    in>>n>>k;
    int p = 0;
    int maxi = -1;
    for(int i=1;i<=n;i++){
        in>>v[i];
        p+=v[i];
        if(maxi < v[i])
            maxi = v[i];
    }
    int st,dr,mij;
    st = maxi;
    dr = p;
    long long rasp;
    while(st<=dr){
        mij = (st + dr)/2;
        int cnt = 1;
        long long s = 0;
        for(int i=1;i<=n;i++){
            s+=v[i];
            if(s + v[i+1] > mij){
                cnt++;
                s = 0;
            }
        }
        if(cnt <= k){
            rasp = mij;
            dr = mij - 1;
        }
        else
            st = mij + 1;
    }
    out<<rasp;
    return 0;
}