Cod sursa(job #249904)

Utilizator katakunaCazacu Alexandru katakuna Data 29 ianuarie 2009 15:09:43
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include<stdio.h>
#include<algorithm>
using namespace std;

int i,aux,n,v[500111];

void down(int poz,int n){
int t=poz;
int c1,c2;
c1 = t<<1;

  if(c1 < n && v[c1] < v[c1 + 1])
  c1++;

  while(c1<=n && v[t] < v[c1]){
  aux=v[t];
  v[t]=v[c1];
  v[c1]=aux;
  t=c1;
  c1 = t<<1;

    if(c1 < n && v[c1] < v[c1 + 1])
    c1++;

  }

}

void up(int poz,int n){
int c=poz,t;
t=c>>1;

   while(t && v[c] > v[t]){
   aux=v[t];
   v[t]=v[c];
   v[c]=aux;
   c=t;
   t=c>>1;
   }

}



void sort(){

 for(i=2;i<=n;i++){
 up(i,i);
 }

 for(i=n;i>1;i--){
 aux=v[i];
 v[i]=v[1];
 v[1]=aux;
 down(1,i-1);
 }
}



int main(){

FILE *f=fopen("algsort.in","r");
fscanf(f,"%d",&n);
   for(i=1;i<=n;i++)
   fscanf(f,"%d",&v[i]);
fclose(f);

sort();


FILE *g=fopen("algsort.out","w");
   for(i=1;i<=n;i++)
   fprintf(g,"%d ",v[i]);
fclose(g);

return 0;
}