Cod sursa(job #3326813)

Utilizator ultra980Alex Stan ultra980 Data 30 noiembrie 2025 17:24:22
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.32 kb
#include <fstream>

const int MAXN = 5e5;
int arr[MAXN];

void qsort(int   begin,int end)   {int b=begin,e      =end,aux,    pivot=arr[(
begin            +end)                     /2];   while(    arr    [b]<    pivot)
++b;             while(arr[e]>         pivot      )--e;while(b<    e){arr[b]^=arr
[e];             arr[e]           ^=arr           [b];     arr[    b]^=   arr
[e];do++b;while  (arr[b]<pivot);  do--e;while(arr [e]>    pivot);  }if   (begin

<e)qsort(begin
,e);        if
(e + 1 < end)
qsort     (e+1
,end);}/*****/

int main() {
  std::ifstream fin;
  std::ofstream fout;
  int n, i;

  fin.open("algsort.in");
  fin >> n;
  for (i = 0; i < n; ++i) {
    fin >> arr[i];
  }
  fin.close();

  qsort(0, n - 1);

  fout.open("algsort.out");
  for (i = 0; i < n; ++i) {
    fout << arr[i] << ' ';
  }
  fout << '\n';
  fout.close();

  return 0;
}

/*
void qsort(int begin, int end) {
  int b = begin, e = end, aux, pivot = arr[(begin + end) / 2];
  while (arr[b] < pivot)
    ++b;
  while (arr[e] > pivot)
    --e;
  while (b < e) {
    arr[b] ^= arr[e];
    arr[e] ^= arr[b];
    arr[b] ^= arr[e];
    do
      ++b;
    while (arr[b] < pivot);
    do
      --e;
    while (arr[e] > pivot);
  }
  if (begin < e)
    qsort(begin, e);
  if (e + 1 < end)
    qsort(e + 1, end);
}
^^^^^^^^^^^^^^^^^ acelasi qsort, dar formatat normal
*/