Cod sursa(job #2063370)

Utilizator modulopaulModulopaul modulopaul Data 11 noiembrie 2017 11:06:50
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <iostream>
#include <fstream>
#define MAXN 500001

using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int poz(int p,int q,int v[]){
    int st=p,dr=q,x=v[p];
    while(st<dr){
        while(st<dr and v[dr]>=x) {
            dr--;
        }
        v[st]=v[dr];
        while(st<dr and v[st]<=x) {
            st++;
        }
        v[dr]=v[st];
    }
    v[st]=x;
    return st;
}
void QS(int p,int q,int v[]){
    int m=poz(p,q,v);
    if(m-1>p) {
        QS(p,m-1,v);
    }
    if(m+1<q){
        QS(m+1,q,v);
    }
}
int main(){
    int n,v[MAXN];
    fin>>n;
    for(int i=1;i<=n;i++){
        fin>>v[i];
    }
    QS(1,n,v);
    for(int i=1;i<=n;i++){
        fout<<v[i]<<' ';
    }
    return 0;
}