Pagini recente » Cod sursa (job #884210) | Cod sursa (job #3249000) | Cod sursa (job #604379) | Cod sursa (job #3131281) | Cod sursa (job #455351)
Cod sursa(job #455351)
#include<iostream>
#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);
int n;
cin>>n;
t[ 0 ] = MAXINT;
for( int i = 1; i <= n; ++i)
{
cin>> 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;
}