Pagini recente » Cod sursa (job #1705180) | Monitorul de evaluare | Sandbox (cutiuţa cu năsip) | Cod sursa (job #252510) | Cod sursa (job #1191577)
#include<cstdio>
int n,i,j,v[500100],a;
FILE *f,*g;
void chg(int &a,int &b){
int aux=a;
a=b;
b=aux;
}
void add(int v[500100],int n,int x){
v[++n]=x;
int c=n;
int p=n/2;
while(p!=0){
if(v[c]>v[p]){
chg(v[c],v[p]);
c=p;
p/=2;
}
else
break;
}
}
void correct(int v[500100],int n){
int p=1;
int c=2*p;
while(c<=n){
if(c<n&&v[c]<v[c+1])
c++;
if(v[c]>v[p]){
chg(v[c],v[p]);
p=c;
c=2*p;
}
else
break;
}
}
int main(){
f=fopen("algsort.in","r");
g=fopen("algsort.out","w");
fscanf(f,"%d",&n);
for(i=1;i<=n;i++){
fscanf(f,"%d",&v[i]);
add(v,i-1,v[i]);
}
for(i=n;i>=2;i--){
chg(v[1],v[i]);
correct(v,i-1);
}
for(i=1;i<=n;i++){
fprintf(g,"%d ",v[i]);
}
fclose(f);
fclose(g);
return 0;
}