Mai intai trebuie sa te autentifici.
Cod sursa(job #833747)
Utilizator | Data | 12 decembrie 2012 23:25:55 | |
---|---|---|---|
Problema | Sortare prin comparare | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.87 kb |
#include<fstream>
#include<iostream.h>
#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);
}
}