Cod sursa(job #3276995)

Utilizator eric_dragosDragos Eric eric_dragos Data 15 februarie 2025 11:07:39
Problema Transport Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");

int n,k,maxC=-1;
int drumuri(vector<int>& v,int x){
    int nr=0, c=0;
    for(int i = 1; i<=n; i++){
        c += v[i];
        if(c <= x)continue;
        else{
            c = v[i];
            nr++;
            if(i == n)nr++;
        }

    }
    return nr;
}
int main()
{
    fin >> n >> k;
    vector<int> v(n+1,0);
    int s = 0;
    for(int i = 1; i<=n; i++){
        fin >> v[i];
        s += v[i];
        maxC = max(maxC, v[i]);
    }
    int l = 1;
    int r = s;
    int ans = 0;
    while(l<r){
        int mid = (l+r)/2;
        int nr = drumuri(v,mid);
        if(nr > k){
            l = mid+1;
        }
        else {
            ans = mid;
            r = mid-1;
        }
    }
    fout << ans;


    return 0;
}