Pagini recente » Profil Robert_Mitri | Cod sursa (job #2010765) | Cod sursa (job #2038747) | Cod sursa (job #3182556) | Cod sursa (job #1034672)
#include<iostream>
#include<fstream>
#include<climits>
using namespace std;
ifstream fin("saltele.in");
ofstream fout("transport.out");
bool test(long long capacitate,unsigned short saltele[], unsigned short N, unsigned short K){
unsigned short i;
int s=0,transporturi=0;
for(i=0;i<N;i++){
if(s+saltele[i] <= capacitate) s+=saltele[i];
else{
s=saltele[i];
transporturi++;
}
if(saltele[i]>capacitate) return 0;
}
if(s) transporturi ++;
return transporturi<=K && transporturi;
}
int main(){
unsigned short saltele[16000],N,K; //32kb
int li,ls,s=0,i,m;
fin>>N>>K;
for(i=0;i<N;i++){
fin>>saltele[i];
s+=saltele[i];
}
li=1;ls=s;
while(li<ls && test(ls-1,saltele,N,K)){
m=(li+ls)/2;
if(test(m,saltele,N,K)) //pentru volum m se incadreaza
ls=m;
else li=m; //folosesc camioane prea mici
}
cout<<ls<<endl;
return 0;
}