Pagini recente » Cod sursa (job #668093) | Istoria paginii runda/2020/clasament | Cod sursa (job #2308192) | Cod sursa (job #1119155) | Cod sursa (job #855951)
Cod sursa(job #855951)
#include <cstdio>
#include <cstdlib>
#define nr_max 500001
int a [ nr_max ] , N ;
void swap ( int &a , int &b )
{
int aux = a ;
a = b ;
b = aux ;
}
int alegpiv( int l , int r )
{
int piv ;
piv = r ; l-- ;
while ( 1 )
{
while ( a [ ++l ] < a [ piv ] && l < r ) ;
while ( a [ --r ] > a [ piv ] && l < r ) ;
if ( l < r )
swap ( a [ l ] , a [ r ] ) ;
else goto here ;
}
here:
swap ( a [ l ] , a [ piv ] ) ;
return l ;
}
void qsort ( int l , int r )
{
if( l >= r ) return;
int m = alegpiv ( l , r ) ;
qsort ( l , m-1 ) ;
qsort ( m + 1 , r ) ;
}
int main ()
{
FILE *fin , *fout ;
fin = fopen ( "algsort.in" , "rt" ) ;
fout = fopen ( "algsort.out" , "wt" ) ;
fscanf ( fin , "%d" , &N ) ;
for ( int i = 1 ; i <= N ; i++ )
fscanf ( fin , "%d " , a + i ) ;
printf ( "\n" ) ;
qsort ( 1 , N ) ;
for ( int i = 1 ; i <= N ; i++ )
fprintf ( fout , "%d " , a [ i ] ) ;
fclose ( fin ) ;
fclose ( fout ) ;
return 0 ;
}