Cod sursa(job #1135735)

Utilizator AndreiRSStatescu Andrei Rares AndreiRS Data 8 martie 2014 12:33:07
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include <stdio.h>
#include <fstream>
#include <stdlib.h>
#include <math.h>
#include <algorithm>
#include <assert.h>
#include <time.h>
#include <string.h>
#include <vector>
using namespace std;


void cit (int *n, int **v)
{
    scanf ("%d", n);

    *v = (int*) malloc (sizeof(int) * *n);
    for (int i = 0; i < *n; i++)
        scanf ("%d", *v + i);
}

void rec (int *v, int left, int right)
{
    if (left >= right) return;

    int l1 = left, r1 = right;
    bool dir = 0;

    while (left < right)
    {
        if (v[left] > v[right])
        {
            swap (v[left], v[right]);
            dir = ~dir;
        }

        if (dir) left++;
        else right--;
    }
    rec (v, l1, left-1);
    rec (v, right+1, r1);
}

void afi (int n, int **v)
{
    for (int i = 0; i < n; i++)
        printf ("%d ", (*v)[i]);
}

int main ()
{
    freopen ("algsort.in", "r", stdin);
    freopen ("algsort.out", "w", stdout);

    int n;
    int *v;

    cit (&n, &v);
    rec (v, 0, n-1);
    afi (n, &v);

    fclose (stdin);
    fclose (stdout);

    return 0;
}