Cod sursa(job #3150688)

Utilizator victorzarzuZarzu Victor victorzarzu Data 17 septembrie 2023 23:05:53
Problema Sortare prin comparare Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <cstring>
#include <unordered_map>
#include <algorithm>

using namespace std;

ifstream f("algsort.in");
ofstream g("algsort.out");
int n;
int arr[500001];

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

int partition(int left, int right) {
  int index = left - 1;
  int p = arr[right];
  for(int i = left;i <= right;++i) {
    if(arr[i] < p) {
      ++index;
      swap(arr[i], arr[index]);
    }
  }
  ++index;
  swap(arr[index], arr[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;
}