Cod sursa(job #2817266)

Utilizator victorzarzuZarzu Victor victorzarzu Data 13 decembrie 2021 12:43:52
Problema Sortare prin comparare Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <bits/stdc++.h>
#define oo 0x3f3f3f3f

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 pivot(int left, int right)
{
  int piv = arr[right];
  int index = left - 1;

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

void quicksort(int left, int right)
{
  if(left < right)
  {
    int p = pivot(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;
}