Pagini recente » Cod sursa (job #1747898) | Cod sursa (job #2829678) | Cod sursa (job #1818451) | Cod sursa (job #547737) | Cod sursa (job #833749)
Cod sursa(job #833749)
#include<fstream>
#define elmax 2147483647
#define lmax 500000
using namespace std;
int arbint[5*lmax],v[lmax];
int minim(int a, int b){
return a<b?a:b;}
void buildarbint(int nod,int st,int dr){
if(st==dr)
arbint[nod]=v[st];
else{
int div=(st+dr)/2;
buildarbint(nod*2,st,div);
buildarbint(nod*2+1,div+1,dr);
arbint[nod]=minim(arbint[2*nod],arbint[2*nod+1]);
}
}
void sterge(int nod, int st, int dr){
if(st==dr)arbint[nod]=elmax;
else{
int div=(st+dr)/2;
if(arbint[2*nod]==arbint[1])
sterge(2*nod,st,div);
else
sterge(2*nod+1,div+1,dr);
arbint[nod]=minim(arbint[2*nod],arbint[2*nod+1]);
}
}
int main(){
int i,n;
ifstream f("algsort.in");
ofstream g("algsort.out");
f>>n;
for(i=1;i<=n;i++){
f>>v[i];
buildarbint(1,1,n);
}
for(i=1;i<=n;i++){
g<<arbint[1]<<" ";
sterge(1,1,n);
}
}