Cod sursa(job #1240016)

Utilizator thinkphpAdrian Statescu thinkphp Data 10 octombrie 2014 10:40:13
Problema Sortare prin comparare Scor 40
Compilator c Status done
Runda Arhiva educationala Marime 1.1 kb
#include <stdio.h>
#define FIN "algsort.in"
#define FOUT "algsort.out"
#define MAXN 500005

int vec[ MAXN ], 
    N;

void quicksort(int li, int ls) {
 
    int i,
        j,
        i1,
        j1,
        aux;

    i  = li;
    j  = ls;
    i1 = 0;
    j1 = -1;

    while( i < j ) {

          if(vec[ i ] > vec[ j ]) {

             aux = vec[ i ] ^ vec[ j ];
             vec[ i ] = aux ^ vec[ i ]; 
             vec[ j ] = aux ^ vec[ j ];
          }

          i = i + i1;
          j = j + j1;
    }

     if(li < ls) {

        quicksort(li, i - 1);

        quicksort(i + 1, ls);                  
     }
}

void write() {

     int i;

     freopen(FOUT, "w", stdout);

     for(i = 0; i < N; i++) {

         printf("%d ", vec[ i ]);
     }

     fclose( stdout );
}

void read() {

     int i;
 
     freopen(FIN, "r", stdin);

     scanf("%d",&N);

     for(i = 0; i < N; i++) {

         scanf("%d", &vec[ i ]);
     } 

     fclose( stdin );
}

int main() {

    read();
    quicksort(0, N-1);   
    write(); 
    return(0);
}