Pagini recente » Photo | Cod sursa (job #2851340) | Cod sursa (job #2848869) | Istoria paginii runda/tema_grf | Cod sursa (job #3203996)
#include <iostream>
#include <vector>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
vector<int>v;
int cautaBinar(int n,int k){
int st=1;
int dr=256000000;
int rasp=-1;
while(st<=dr){
int cont=1;
int mij=(st+dr)/2;
int sum=0;
bool ok=true;
for(int i=1;i<=n;i++){
if(v[i]>mij){
st=mij+1;
ok=false;
break;
}
if(sum+v[i]<=mij){
sum+=v[i];
}else{
sum=v[i];
cont+=1;
}
}
if(cont>k or !ok){
st=mij+1;
}else{
rasp=mij;
dr=mij-1;
}
}
return rasp;
}
int main(){
int n,k;
cin>>n>>k;
v.resize(n+1);
int i=1;
while(i<n+1){
cin>>v[i];
i+=1;
}
int rasp=cautaBinar(n,k);
cout<<rasp;
}