Cod sursa(job #3311722)

Utilizator magnifica5Tabarca Ioana magnifica5 Data 23 septembrie 2025 22:03:14
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <bits/stdc++.h>
#define cin fin
#define cout fout
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int main()
{
    int n, sum = 0, maxi = 0, k;
    cin >> n >> k;
    vector<int> stv(n + 1);
    for(int i = 1; i <= n; i ++){
        cin >> stv[i];
        maxi = max(maxi, stv[i]);
        sum += stv[i];
    }
    int left = maxi, right = sum, mini = sum;
    while(left <= right){
        int middle = (left + right) / 2;
        int cnt = 1, summ = 0;
        for(int j = 1; j <= n; j ++){
            if(summ + stv[j] <= middle)
                summ += stv[j];
            else
                summ = stv[j], cnt ++;
        }
        if(cnt <= k){
           mini = min(mini, middle);
           right = middle - 1;
        }
        else
            left = middle + 1;
    }
    cout << mini;
}