Pagini recente » Cod sursa (job #3368024) | Borderou de evaluare (job #3367851) | Cod sursa (job #3364677) | Autentificare | Cod sursa (job #3367728)
#include <fstream>
#include <algorithm>
#define int long long
#define f first
#define s second
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
int v[200005];
int n, k;
bool sepoate(int x){
int sum=0;
int nr=1;
for(int i=0; i<n; i++){
if(sum+v[i]<=x) sum+=v[i];
else {
sum=v[i];
nr++;
}
}
return nr<=k;
}
int32_t main()
{
cin>>n>>k;
for(int i=0; i<n; i++){
cin>>v[i];
}
int st=1, dr=200000002;
while(st<dr){
int mid=st+(dr-st)/2;
if(sepoate(mid)){
dr=mid;
}
else st=mid+1;
}
cout<<dr;
}