Pagini recente » Cod sursa (job #1800977) | Cod sursa (job #2886808) | Cod sursa (job #2637838) | Cod sursa (job #2311278) | Cod sursa (job #3032993)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int v[16005];
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){
long long 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];
}
cout<<binsearch(maxim,16005,n,k);
return 0;
}