Cod sursa(job #2662988)

Utilizator cristi_macoveiMacovei Cristian cristi_macovei Data 25 octombrie 2020 00:18:28
Problema Sortare prin comparare Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <iostream>
#include <fstream>

const int NMAX = 5e5;

int n;
int a[1 + NMAX];

int qsort_part(int left, int right) {
  int pivot_ind = left;
  int pivot_val = a[right];
  for (int i = left; i < right; ++i) {
    if (a[i] < pivot_val) {
      std::swap(a[pivot_ind], a[i]);
      ++ pivot_ind;
    }
  }
  std::swap(a[pivot_ind], a[right]);
  return pivot_ind;
}

void quicksort(int left, int right) {
  if (left >= right)
    return;
  int index = qsort_part(left, right);
  quicksort(left, index - 1);
  quicksort(index + 1, right);
}

int main() {
  std::ifstream in("algsort.in");
  std::ofstream out("algsort.out");

  in >> n;
  for (int i = 1; i <= n; ++i)
    in >> a[i];
  in.close();

  quicksort(1, n);

  for (int i = 1; i <= n; ++i)
    out << a[i] << ' ';

  out.close();
  return 0;
}