Cod sursa(job #455357)

Utilizator liviu12345Stoica Liviu liviu12345 Data 13 mai 2010 16:59:19
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
#include<iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include<stdio.h>
#define MAXN 512 * 1025
#define MAXINT ((1 << 30 ) -1)  * 2 + 1

using namespace std;

int arb[ MAXN * 2];
int t[ MAXN ];


void insert( int value, int poz, int nod, int left, int right)
{
	
	if( poz > right || poz < left ) return ;
	if( left == right )
	{
		arb[ nod ] = value; return;
	}
	int mij = ( left + right) /2;
	
	insert( value, poz, nod * 2, left, mij);
	insert( value, poz, nod * 2 + 1, mij + 1, right);
	arb[ nod ] = arb[ nod * 2 + 1];
	if( t [arb[ nod * 2 ] ] < t[ arb[ nod *2 + 1] ] )
		arb[ nod ] = arb[ nod * 2];
	
}

int main()
{
	//freopen("algsort.in","r",stdin);
	freopen("algsort.out","w",stdout);
	
	ifstream fi( "algsort.in" );
	//ofstream fo( "algsort.out" );

	
	int n;
	fi >> n;
	//scanf("%d", &n);
	
	t[ 0 ] = MAXINT;
	for( int i = 1; i <= n; ++i)
	{
		
		//scanf("%d", &t[i]);
		fi>>t[i];
		insert( i, i, 1, 1, n);
	}
	
	for( int i = 1; i <= n; ++i)
	{
		
		printf("%d ",t[ arb[ 1 ]]);
		insert( 0, arb[ 1 ], 1, 1, n);
		
	}
	
	
	
	
	return 0;
}