Pagini recente » Cod sursa (job #3155659) | Cod sursa (job #3354619) | Cod sursa (job #3300831) | Cod sursa (job #2134597) | Cod sursa (job #3351023)
#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;
}