Pagini recente » Cod sursa (job #2978603) | Cod sursa (job #1977719) | Cod sursa (job #1327854) | Cod sursa (job #70434) | Cod sursa (job #1435715)
#include <stdio.h>
#include <stdlib.h>
#define LIM 2097152
int p=LIM-1;
char s[LIM], auxx[200];
#define auxx (auxx+3)
FILE *fin;
inline void avans(){
if(++p==LIM){
fread(s, LIM, 1, fin);
p=0;
}
}
inline int getnr(){
while(auxx[s[p]]==0)
avans();
int nr=0;
while(auxx[s[p]]==1){
nr=nr*10+s[p]-'0';
avans();
}
return nr;
}
int v[500000];
void myqsort(int begin, int end){
int aux, b=begin, e=end, pivot=v[begin+rand()%(end-begin+1)];
while(b<=e){
while(v[b]<pivot)
++b;
while(v[e]>pivot)
--e;
if(b<=e){
aux=v[b]; v[b]=v[e]; v[e]=aux;
++b; --e;
}
}
if(begin<e)
myqsort(begin, e);
if(b<end)
myqsort(b, end);
}
int main()
{
FILE *fout;
int n, i;
for(i='0'; i<='9'; i++)
auxx[i]=1;
auxx[EOF]=2;
fin=fopen("algsort.in", "r");
n=getnr();
for(i=0; i<n; i++)
v[i]=getnr();
fclose(fin);
myqsort(0, n-1);
fout=fopen("algsort.out", "w");
for(i=0; i<n; i++)
fprintf(fout, "%d ", v[i]);
fprintf(fout, "\n");
fclose(fout);
return 0;
}