Cod sursa(job #2999230)

Utilizator edge1124Sindelaru Stefan edge1124 Data 10 martie 2023 17:56:51
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <fstream>
#include <cmath>

using namespace std;
int v[16005];
int n;
ifstream fin("transport.in");
ofstream fout("transport.out");

 int test(int c, int k){
    int sum = 0;
    for(int i = 1; i <= n; i ++){
        sum+=v[i];
        if(sum>c){
            sum=v[i];
            k--;
        }
    }
    return k>=1;
 }

 int cautbin(int st, int dr, int k){
    int med;
    int ans;
    while(st<=dr){
        med = (st+dr)/2;

        if(test(med, k)){
            dr=med-1;
            ans=med;
        }else{
            st=med+1;

        }
    }
    return ans;
 }

int main(){
    int k,  maxnr=-1;
    fin>>n>>k;
    for(int i = 1; i <= n; i++){

        fin>>v[i];
        if(v[i]>maxnr){
            maxnr=v[i];
        }


    }
    int st=maxnr, dr=256000000;
    fout<<cautbin(st, dr, k);
}