Pagini recente » Cod sursa (job #1364880) | Cod sursa (job #231655) | Cod sursa (job #495738) | Cod sursa (job #618732) | Cod sursa (job #3033019)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int v[100005];
bool incape(int dimensiune, int n, int k){
int nrTransporturi=1;
int s=0;
for(int i=1;i<=n;i++){
if(v[i]+s<=dimensiune)
s=s+v[i];
else{
s=v[i];
nrTransporturi++;
}
}
return nrTransporturi<=k;
}
int binsearch(int st, int dr,int n,int k){
int ans=-1;
while(st<=dr){
int med=(st+dr)/2;
if(incape(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,128000000,n,k);
return 0;
}