Cod sursa(job #380501)

Utilizator Cristy94Buleandra Cristian Cristy94 Data 6 ianuarie 2010 13:59:36
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int a[500001],n,i,maxim,p,t,j;
void combheap(int i, int u){
	  int s,d;
	  while(2*i<=u)
	  { maxim=a[i];
		  s=2*i;
		  d=2*i+1;
		if(maxim<a[s])
		  { maxim=a[s];
		    p=s;
		  }
		if(maxim<a[d] && d<=u)
		  { maxim=a[d];
		    p=d;
		  }
		if(maxim!=a[i]){
			t=a[i];
			a[i]=maxim;
			a[p]=t;
			i=p;
		}
		else 
			break;
	  }
}
		  

int main(){
f>>n;
for(i=1;i<=n;i++)
	 f>>a[i];
for(i=n/2;i>0;i--)
	 combheap(i,n);	
i=n;
while(i>1)
 { t=a[1];
    a[1]=a[i];
	a[i]=t;
	i--;
	combheap(1,i);
   }
for(i=i;i<=n;i++)
	g<<a[i]<<" ";

return 0;	
}