Pagini recente » Cod sursa (job #3360565) | Cod sursa (job #3360598) | Cod sursa (job #3360559) | Cod sursa (job #3360592) | Cod sursa (job #3360476)
#include <fstream>
#define NMAX 16000
#define KMAX 16000
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int v[NMAX+1],n,k;
bool sizegud(int cap){
int i,tra,dim;
tra=1;
dim=cap;
for(i=1;i<=n && tra<=k;i++){
if(dim>=v[i])
dim-=v[i];
else{
tra++;
dim=cap-v[i];
}
}
if(tra<=cap)
return true;
else
return false;
}
int binsrch(int maxi,int sum){
int st,dr,mij;
st=maxi-1;
dr=sum;
while(dr-st>1){
mij=(st+dr)/2;
if(sizegud(mij)==true)
dr=mij;
else
st=mij;
}
return dr;
}
int main()
{
int i,s=0,maxi=0,n;
fin>>n;
for(i=1;i<=n;i++){
fin>>v[i];
s+=v[i];
if(v[i]>maxi)
maxi=v[i];
}
fout<<binsrch(maxi,s)+1;
}