Cod sursa(job #801050)

Utilizator vladiiIonescu Vlad vladii Data 23 octombrie 2012 11:51:04
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
#define maxn 500010

int N;
int A[maxn];

void quickSort(int left, int right) {
     if(left >= right) return;

     int mid = (left + right) / 2;

     swap(A[mid], A[right]);

     int pos = left;

     for(int i=left; i<right; i++) {
          if(A[i] < A[right]) {
               swap(A[pos], A[i]);

               pos ++;
          }
     }

     swap(A[pos], A[right]);

     quickSort(left, pos - 1);
     quickSort(pos + 1, right);
}

int main() {
     FILE * f1 = fopen("algsort.in", "r"), * f2 = fopen("algsort.out", "w");
     int i, j, p, q;

     fscanf(f1, "%d\n", &N);
     for(i=1; i<=N; i++) {
          fscanf(f1, "%d", &A[i]);
     }

     quickSort(1, N);

     for(i=1; i<=N; i++) {
          fprintf(f2, "%d ", A[i]);
     }

     fprintf(f2, "\n");
     fclose(f1); fclose(f2);
     return 0;
}