Cod sursa(job #3124638)

Utilizator David8406Marian David David8406 Data 29 aprilie 2023 17:14:01
Problema Sortare prin comparare Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include <bits/stdc++.h>
#define mod 666013
using namespace std;
int n,v[500005],s[500005],d[500005],ns,nd;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
void quicksort(int st, int dr){
    if (st>=dr) return;
    ns=0;
    nd=0;
    int pivot=v[(st+dr)/2];
    for (int i=st;i<=dr;i++){
        if (i==(st+dr)/2) continue;
        if (v[i]<pivot){
            ns++;
            s[ns]=v[i];
        }
        else{
            nd++;
            d[nd]=v[i];
        }
    }
    for (int i=1;i<=ns;i++) v[st+i-1]=s[i];
    v[st+ns]=pivot;
    for (int i=1;i<=nd;i++) v[st+ns+i]=d[i];
    quicksort(st,st+ns-1);
    quicksort(st+ns+1,dr);
}
int main(){
    fin>>n;
    for (int i=1;i<=n;i++) fin>>v[i];
    quicksort(1,n);
    for (int i=1;i<=n;i++) fout<<v[i]<<" ";
}