Cod sursa(job #2580966)

Utilizator ShumaherAdasga Shumaher Data 14 martie 2020 13:32:59
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include <iostream>
#include <fstream>
#define MAX 500100
using namespace std;

ifstream in("algsort.in");
ofstream out("algsort.out");
int A[MAX];

int * QUICKSORT(int A[], int inf, int sup) {
  int x, i, j, t;
  i = inf;
  j = sup;
  x = A[(i + j) / 2]; //Elementul din mijloc e pivotul
  do {
    while ( (i < sup) && (A[i] < x) ) i++; //Cate elemente mai mici decat pivotul sunt
    while ( (j > inf) && (A[j] > x) ) j--; //Cate elemente mai mari decat pivotul
    if ( i <= j ) { //Le schimbam intre ele
      t = A[i];
      A[i] = A[j];
      A[j] = t;
      i++;
      j--;
    }
  } while ( i <= j );
  if ( inf < j ) QUICKSORT(A, inf, j); //Sortam bucatile ramase
  if ( i < sup ) QUICKSORT(A, i, sup);
  return A;
}
int main() {
  std::ios_base::sync_with_stdio(false); //Pe unele teste creste putin timpul(maxim 20ms) pe unul dintre teste il scade cu 200ms
    int N;
    in>>N;
    for(int i=1;i<=N;i++)
        in>>A[i];
    int*B=QUICKSORT(A,1,N);

    for(int i=1;i<=N;i++)
        out<<B[i]<<" ";


    return 0;
}