Cod sursa(job #3282784)

Utilizator 9onelostSendrescu Tudor-Gabriel 9onelost Data 6 martie 2025 19:49:04
Problema Transport Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <bits/stdc++.h>
#define DIM 16001
using namespace std;

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

int n,k, st=-1e9,dr=0;

int v[DIM], sp[DIM];

bool verificare(int val){

    int transports = 1 , curr_sum=0;

    for(int i=1;i<=n;i++){

        if(curr_sum + v[i] > val){

            transports++;

            curr_sum = 0;

        }

        curr_sum+=v[i];

        if(transports > k){

            return false;

        }

    }

    return true;

}

int bn_rez(int st,int dr){

    int mij,ret=-1;

    while(st<=dr){

        mij = (st+dr)/2;

        if(verificare(mij)){

            ret=mij;

            dr=mij-1;

        }
        else{

            st=mij+1;

        }

    }

    return ret;

}



int main(){

    fin >> n >> k;



    for(int i=1;i<=n;i++){

        fin >> v[i];

        if(v[i]>st){

            st=v[i];

        }

        dr+=v[i];

    }

    fout << bn_rez(st,dr);

    return 0;
}