Cod sursa(job #2666217)

Utilizator ViAlexVisan Alexandru ViAlex Data 1 noiembrie 2020 11:00:13
Problema Sortare prin comparare Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.72 kb
#include<iostream>
#include<fstream>
using namespace std;

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

int n,v[500000];

inline int random(int l,int r){
	int x=rand();
	return x%(r-l+1)+l;
}

void read(){
	in>>n;
	for(int i=0;i<n;i++){
		in>>v[i];
	}
}

int partition(int*arr,int l,int r){
	int k=l-1,m=arr[r];

	for(int i=l;i<=r-1;i++){
		if(arr[i]<=m){
			k++;
			swap(arr[k],arr[i]);
		}
	}
	k++;
	swap(arr[k],arr[r]);
	return k;
}


void sort(int*arr,int l,int r){
	if(l>=r){
		return;
	}
	
	int ran=random(l,r);
	swap(v[ran],v[r]);
	
	int piv=partition(arr,l,r);
	sort(arr,l,piv-1);
	sort(arr,piv+1,r);
}



int main(){
	srand(time(NULL));
	read();
	sort(v,0,n-1);
	for(int i=0;i<n;i++)
		out<<v[i]<<" ";
	return 0;
}