Pagini recente » Cod sursa (job #614271) | Cod sursa (job #539796) | Cod sursa (job #1040418) | Cod sursa (job #1109217) | Cod sursa (job #3030354)
#include<iostream>
#include<fstream>
using namespace std;
int v[20000];
bool incape(int dimensiune,int n,int k){
int s=0;
int camioane=0;
for(int i=1;i<=n;i++){
s=s+v[i];
if(s>dimensiune){
camioane++;
s=v[i];
}
}
camioane++;
return camioane<=k;
}
int cautarebinara(int st, int dr, int k,int n){
int ans=0;
while(st<=dr){
int med=(st+dr)/2;
if(incape(med,n,k)){
dr=med-1;
ans=med;
}
else{
st=med+1;
}
}
return ans;
}
ifstream fin("transport.in");
ofstream fout("transport.out");
int main(){
int n,k;
fin>>n>>k;
int maxim=0;
int s=0;
for(int i=1;i<=n;i++){
fin>>v[i];
if(maxim<=v[i]){
maxim=v[i];
}
s=s+v[i];
}
fout<<cautarebinara(maxim,s,k,n);
}