Cod sursa(job #349346)

Utilizator mihaionlyMihai Jiplea mihaionly Data 19 septembrie 2009 10:05:03
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <stdio.h>
#define nmax 500009
typedef long long big;
typedef unsigned uint;
FILE *f=fopen("algsort.in","r");
FILE *g=fopen("algsort.out","w");
big A[nmax];
uint n;
void swap(big &x,big &y)
 {
 big xx=x;
 x=y;
 y=xx;
 }
void read()
 {
 fscanf(f,"%ld",&n);
 for(int i=1;i<=n;i++)
  fscanf(f,"%ld",&A[i]);
 }
void qsort(uint l,uint r)
 {
 uint st=l,dr=r;
 big piv=A[(l+r)/2];
 while(st<dr)
  {
 while(A[st]<piv) st++;
 while(A[dr]>piv) dr--;
 if(st<=dr)
  {
  swap(A[st],A[dr]);
  st++;
  dr--;
  }
}
 if(dr>l)
  qsort(l,dr);
 if(st<r)
  qsort(st,r);
 }
void show()
 {
 for(int i=1;i<=n;i++)
  fprintf(g,"%ld ",A[i]);
 }
int main()
 {
 read();
 qsort(1,n);
 show();
 return 0;
 }