#include //--------------------------------------------------------------------------- void intercambia(int *array,int pos1,int pos2) { int temp = array[pos2]; array[pos2] = array[pos1]; array[pos1] = temp; } ///******************************** void quickSort(int *array,int ini,int fin) { if( ini >= fin ) return; int i, f, pivote, Temp; // Establecemos los extremos temporales y el pivote. i = ini; f = fin; pivote = array[(ini+fin)/2]; do { // Buscamos el primer elemento de izquierda a derecha que sea mayor // al pivote. while( array[i] < pivote ) i++; // Buscamos el primer elemento de derecha a izquierda que sea menor // al pivote. while( array[f] > pivote ) f--; if( i <= f ) { // Intercambiamos los extremos. intercambia(array,i,f); // Aumentamos los contadores. i++; f--; } } while (i < f); // Una vez hecha la partición llamamos recursivamente al Quicksort. quickSort(array,ini,f); quickSort(array,i,fin); } //--------------------------------------------------------------------------- int main() { FILE *input,*output; int n,i; int *enano,*peso; input = fopen("input.txt","r+t"); fscanf(input,"%d",&n); enano = new int[n]; peso = new int[n]; for(i = 0; i < n; i++) fscanf(input,"%d",&enano[i]); for(i = 0; i < n; i++) fscanf(input,"%d",&peso[i]); fclose(input); quickSort(enano,0,n-1); quickSort(peso,0,n-1); output = fopen("output.txt","w+t"); for(i = 0; i < n; i++) fprintf(output,"%d %d\n",enano[i],peso[i]); fclose(output); delete[] enano; delete[] peso; return 0; } //---------------------------------------------------------------------------