Cod sursa(job #2910592)

Utilizator MrPuzzleDespa Fabian Stefan MrPuzzle Data 22 iunie 2022 16:36:26
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda 3_iulie Marime 1 kb
#include <fstream>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <climits>

#include <ctype.h>

#define MAX 20000000


using namespace std;


//ifstream f("in.in");
//ofstream g("out.out");

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

int n,k,v[16005];

bool solveForC(int c){

    int ind=n,sum=0,cnt=0;
    while(ind>0){
        sum=0;
        while(sum + v[ind] <= c && ind>0){
            sum+=v[ind];
            ind--;
        }
        cnt++;
    }
    if(cnt<=k){
        return 1;
    }
    return 0;
}

int main(){

    f>>n>>k;

    int maxi=-1;
    for(int i=1;i<=n;i++){
        f>>v[i];
        maxi = max(maxi,v[i]);
    }

    int st=maxi,dr=INT_MAX,sol;
    while(st<=dr){
        int mij = (1ll*st+1ll*dr)/2;
        if(solveForC(mij)==1){
            dr = mij-1;
            sol = mij;
        }else{
            st = mij+1;
        }
    }

    g<<sol;

    f.close();
    g.close();
    return 0;
}