Cod sursa(job #1238646)

Utilizator MarronMarron Marron Data 7 octombrie 2014 13:57:16
Problema Sortare prin comparare Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
#define MAXN 500005

ifstream f("algsort.in");
ofstream g("algsort.out");

int n;
int x[MAXN];


void qsort(int st = 1, int dr = n)
{
    if (st >= dr) return;

    int i = st, j = dr, dir = 1;
    while (i != j)
    {
        if (dir == 1) {
            if (x[i] <= x[j]) {
                i++;
            } else {
                swap(x[i], x[j]);
                dir = -1;
                j--;
            }
        } else {
            if (x[i] <= x[j]) {
                j--;
            } else {
                swap(x[i], x[j]);
                dir = 1;
                i++;
            }
        }
        qsort(st, i - 1);
        qsort(i + 1, dr);
    }
}

int main()
{
    f >> n;
    for (int i = 1; i <= n; i++) {
        f >> x[i];
    }

    qsort();

    for (int i = 1; i <= n; i++) {
        g << x[i] << ' ';
    }

    return 0;
}