Pagini recente » Cod sursa (job #970584) | Cod sursa (job #1960905) | Cod sursa (job #1196363) | Cod sursa (job #1021604) | Cod sursa (job #2894999)
#include <bits/stdc++.h>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
vector<int> v;
int k;
bool solve(int x){
int transport=1;
int s=0;
for(int i=0;i<v.size();++i){
if(s+v[i]<=x){
s= s + v[i];
}
else{
s=0;
transport++;
}
}
return transport<=k;
}
int binarySearch(int left, int right){
if(left>right)
return -1;
else{
int mid = (left+right)/2;
if (solve(mid) ==true && solve(mid-1) == false){
return mid;
}
else if(solve(mid) ==false)
return binarySearch(mid+1,right);
else
return binarySearch(left,mid-1);
}
}
int main() {
int n,i,a;
f>>n>>k;
int maxi=0,sum=0;
for(i=0;i<n;++i){
cin>>a;
sum += a;
maxi=max(maxi,a);
v.push_back(a);
}
g<<binarySearch(maxi,sum);
return 0;
}