Pagini recente » Cod sursa (job #1775321) | Cod sursa (job #1970198) | Cod sursa (job #2432440) | Cod sursa (job #1603742) | Cod sursa (job #3041785)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int v[100005];
bool test(int d, int n, int k){
int t=1;
int s=0;
for(int i=1;i<=n;i++){
if(v[i]+s<=d){
s=s+v[i];
}
else{
s=v[i];
t++;
}
}
return t<=k;
}
int binsearch(int st, int dr, int n, int k){
int ans=-1;
while(st<=dr){
int med=(st+dr)/2;
if(test(med,n,k)==true){
dr=med-1;
ans=med;
}
else{
st=med+1;
}
}
return ans;
}
int main()
{
int n,k,maxim=-1;
fin>>n>>k;
for(int i=1;i<=n;i++){
fin>>v[i];
if(v[i]>maxim)
maxim=v[i];
}
fout<<binsearch(maxim,100000000,n,k);
return 0;
}