Cod sursa(job #2988990)

Utilizator willOcanaru Mihai will Data 5 martie 2023 17:53:52
Problema Sortare prin comparare Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.14 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("algsort.in");
ofstream g("algsort.out");

int v[500003]={0};
int a[500003]= {0};
int n;

void quicksort(int left, int right){
    
    if(left>=right) return;
    srand(left);
    int pivot = rand() % (right-left+1) + left;
    
    // int* a = new int[right-left+1];
    
    int index = left,last = right;
    
    
    
    for(int i=left;i<=right;i++){
        if(v[i] < v[pivot]){
            a[index++] = v[i];
        }
        else if(v[i] > v[pivot]){
            a[last--] = v[i];
            
        }
        else{
            if(v[i] == v[pivot] && i!=pivot){
                a[index++] = v[i];
            }
        }
    }
    a[index] = v[pivot];
    
    for(int i=left;i<=right;i++){
        v[i] = a[i];
    }
    
    
    quicksort(left,index-1);
    quicksort(index+1,right);
    
    // delete[] a;
}


int main()
{
    int x;
    f>>n;
    
    
    for(int i=0;i<n;i++){
        f>>v[i];
    }

    quicksort(0,n-1);
    for(int* i=v;*i != 0;i++){
        g<<*i<<" ";
    }
    

    return 0;
}