Cod sursa(job #490881)

Utilizator mihaipopa12Popa Mihai mihaipopa12 Data 8 octombrie 2010 18:12:14
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<stdio.h>
#include<algorithm>
using namespace std;

FILE*f=fopen("algsort.in","r");
FILE*g=fopen("algsort.out","w");

int V[500500],N,z,i,p,c;

int main () {
	
	fscanf(f,"%d",&N);
	
	for ( i = 1 ; i <= N ; ++i ){
		
		fscanf(f,"%d",&V[i]);
		z = i;
		while ( z/2 != 0 && V[z] > V[z/2] )
			swap(V[z],V[z/2]), z/= 2;
		
	}
	
	for ( i = 1 ; i <= N ; ++i ) {
		
		swap(V[1],V[ N - i + 1 ]);
		
		p = 1 ; c = 2; 
		
		while ( c < N - i  ){
			
			if ( c <= N && V[c] < V[c+1] )
				++c;
			if ( V[p] < V[c] ){
				swap(V[p],V[c]);
				p = c; 
				c = 2 * c;
			}
			else
				break;
		}
		
	}
	if ( V[1] > V[2] )
		swap ( V[1] , V[2] );
	
	for ( i = 1 ; i <= N ; ++i )
		fprintf(g,"%d ",V[i]);
	
	fclose(f);
	fclose(g);
	
	return 0;
}