Cod sursa(job #2931129)

Utilizator victorzarzuZarzu Victor victorzarzu Data 30 octombrie 2022 16:20:53
Problema Sortare prin comparare Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <bits/stdc++.h>

#define N 500005

using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int n;
int arr[N];

void read() {
  f>>n;
  for(int i = 1;i <= n;++i) {
    f>>arr[i];
  }
}

void swap(int i, int j) {
  int temp = arr[i];
  arr[i] = arr[j];
  arr[j] = temp;
}

int partition(int left, int right) {
  int index = left - 1;
  int pivot = arr[right];
  for(int i = left;i < right;++i) {
    if(arr[i] <= pivot) {
      index++;
      swap(index, i);
    }
  }
  ++index;
  swap(index, right);
  return index;
}

void quickSort(int left, int right) {
  if(left < right) {
    int p = partition(left, right);
    quickSort(left, p - 1);
    quickSort(p + 1, right);
  }
}

void solve() {
  quickSort(1, n);
  for(int i = 1;i <= n;++i) {
    g<<arr[i]<<" ";
  }
}

int main() {
  read();
  solve();  
  return 0;
}