Cod sursa(job #3351023)

Utilizator prajituSebastian George prajitu Data 15 aprilie 2026 18:26:35
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <bits/stdc++.h>
#define long long ll
using namespace std;

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

int st,dr;
int n,k;

bool valid(int cap, int k, const vector<int>&S){
int tr =1 , sum =0;
for(int j=0;j < n;j++){
    if(sum+S[j]<=cap){
        sum+=S[j];
    } else {
    tr++;
    sum=S[j];
    }
}
return tr <= k;
}

int main()
{
fin>>n>>k;
vector<int>S(n);
for(int i=0;i<n;i++){
    fin>>S[i];
    st=max(st,S[i]);
    dr+=S[i];
}

int sol = dr;
while(st<=dr){
    int mij= st +(dr-st)/2;
    if(valid(mij,k,S)){
            sol=mij;
        dr=mij-1;
    } else {
    st=mij+1;
    }
}
fout << sol;

    return 0;
}