Cod sursa(job #1238654)

Utilizator MarronMarron Marron Data 7 octombrie 2014 14:11:01
Problema Statistici de ordine Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
#define MAXN 500005

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

int n;
int a[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 (a[i] <= a[j]) {
                i++;
            } else {
                swap(a[i], a[j]);
                dir = -1;
                j--;
            }
        } else {
            if (a[i] <= a[j]) {
                j--;
            } else {
                swap(a[i], a[j]);
                dir = 1;
                i++;
            }
        }
        qsort(st, i - 1);
        qsort(i + 1, dr);
    }
}

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

    sort(a + 1, a + n + 1);

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

    return 0;
}