Cod sursa(job #1211968)

Utilizator andreas.chelsauAndreas Chelsau andreas.chelsau Data 23 iulie 2014 16:33:27
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <iostream>
#include <stdio.h>
using namespace std;
typedef long long ll;

ll n,a[500000 + 100];
void swap(ll i, ll j){
	ll aux = a[i];
	a[i] = a[j];
	a[j] = aux;
}
ll partition(ll a[],ll l, ll r){
	ll i, j, p, t;

    p = a[r];
    i = l;

    for(j = l; j <= r-1; j++) {
        if(a[j] <= p) {
           swap(i,j);
            i++;
        }
    }
	swap(i,r);
    return i;


}

void quick(ll a[],ll p, ll q){
	if(p < q){
		ll m = partition(a,p,q);
		quick(a,p,m - 1);
		quick(a,m + 1, q);
	}

}
int main(){
	freopen("algsort.in","r",stdin);
	freopen("algsort.out","w",stdout);
	scanf("%lld",&n);
	for(unsigned int i = 0; i < n; i++)
		scanf("%lld",&a[i]);
	quick(a,0,n - 1);
	for(unsigned int i = 0; i < n; i++)
		printf("%lld ",a[i]);
	return 0;
}