Pagini recente » Cod sursa (job #1674647) | Cod sursa (job #2528356) | Cod sursa (job #1052206) | Cod sursa (job #2322045) | Cod sursa (job #3282780)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n,k;
int v[DIM], sp[DIM];
bool verificare(int val){
int transports = 1 , curr_sum=0;
for(int i=1;i<=n;i++){
if(curr_sum + v[i] > val){
transports++;
curr_sum = 0;
}
curr_sum+=v[i];
if(transports > k){
return false;
}
}
return true;
}
int bn_rez(int st,int dr){
int mij,ret=-1;
while(st<=dr){
mij = (st+dr)/2;
if(verificare(mij)){
ret=mij;
dr=mij-1;
}
else{
st=mij+1;
}
}
return ret;
}
int main(){
fin >> n >> k;
for(int i=1;i<=n;i++){
fin >> v[i];
}
for(int i=1;i<=n;i++){
sp[i]=sp[i-1] + v[i];
}
int st=sp[1];
int dr=sp[n];
fout << bn_rez(st,dr);
return 0;
}