Pagini recente » Cod sursa (job #2676955) | Cod sursa (job #1515410) | Cod sursa (job #960626) | Cod sursa (job #1759400) | Cod sursa (job #2834394)
#include<stdio.h>
#include<stdlib.h>
const int mx=3e6+1000;
long long v[mx],n,aux;
inline void swap(long long &a,long long &b){
aux=b;
b=a;
a=aux;
}
int partition(long long *v,int left,int right){
int p_pos=rand()%(right-left+1)+left;
long long pivot=v[p_pos];
swap(v[right],v[p_pos]);
int j=left;
for(int i=left;i<=right;i++){
if(v[i]<=pivot){
swap(v[j],v[i]);
j++;
}
}
return j-1;
}
void sort(long long *v, int left, int right){
if(left>=right){
return;
}
int p=partition(v,left,right);
sort(v,left,p-1);
sort(v,p+1,right);
}
void read(){
FILE* fin=fopen("algsort.in","r");
fscanf(fin,"%lld",&n);
for(int i=0;i<n;i++){
fscanf(fin,"%lld",&v[i]);
}
}
void solve(){
sort(v,0,n-1);
FILE* fout=fopen("algsort.out","w");
for(int i=0;i<n;i++)
fprintf(fout,"%lld ",v[i]);
}
int main(){
srand(1248091824);
read();
solve();
return 0;
}