Cod sursa(job #3323260)

Utilizator RosaSofianRosa Sofian RosaSofian Data 17 noiembrie 2025 22:03:44
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");

const int dim= 16005;
int n, k;
int v[dim];

bool solve(int x){
    int cnt, suma;
    cnt= suma= 0;
    int i= 1;
    while(i <= n){
        if(suma+ v[i] > x){
            suma= 0;
            cnt++;
        }
        else{
            suma+= v[i];
            i++;
        }
    }
    if(suma > 0)
        cnt++;

    if(cnt <= k)
        return true;
    return false;
}

int main()
{
    int i, j;
    cin >> n>> k;

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

    int st= maxi, dr= suma, rez= 0;
    while(st <= dr){
        int mij= (st+ dr)/ 2;
        int ok= solve(mij);
        if(ok== 1){
            rez= mij;
            dr= mij- 1;
        }
        else{
            st= mij+ 1;
        }
    }

    cout << rez;



    return 0;
}