Cod sursa(job #1135752)

Utilizator AndreiRSStatescu Andrei Rares AndreiRS Data 8 martie 2014 12:56:02
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.19 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, unsigned int **v)
{
    scanf ("%d", n);

    *v = (unsigned int*) malloc (sizeof(unsigned int) * *n);

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

void rec (unsigned 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 ^ 1;
        }

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

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

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

    int n;
    unsigned int *v;

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

    fclose (stdin);
    fclose (stdout);

    return 0;
}