Pagini recente » Cod sursa (job #175918) | Statistici Panait Mihai-Petru (Petru_77) | Cod sursa (job #2316466) | Cod sursa (job #797461) | Cod sursa (job #3282784)
#include <bits/stdc++.h>
#define DIM 16001
using namespace std;
ifstream fin("transporturi.in");
ofstream fout("transporturi.out");
int n,k, st=-1e9,dr=0;
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];
if(v[i]>st){
st=v[i];
}
dr+=v[i];
}
fout << bn_rez(st,dr);
return 0;
}