Cod sursa(job #1023221)

Utilizator lehman97Dimulescu David lehman97 Data 6 noiembrie 2013 17:28:55
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <iostream>
#include <stdio.h>

FILE *f=fopen("algsort.in","r");
FILE *g=fopen("algsort.out","w");

using namespace std;
int n,i,v[500001];


int extrag();
void afisare();
void combheap(int i,int n);
int main()
{
    fscanf(f,"%d",&n);
    for(i=1;i<=n;i++)
    fscanf(f,"%d",&v[i]);
    for(i=n/2;i>=1;i--)
    combheap(i,n);
    int cn=n;
    for(i=1;i<=cn;i++)
    fprintf(g,"%d ",extrag());
    fclose(g);
    return 0;
}
void combheap(int i, int n)
{
    int a=v[i],tata=i,fiu=2*i;
    while(fiu<=n)
    {
        if(fiu<n)
        if(v[fiu]>v[fiu+1])fiu++;
        if(a>v[fiu])
        {
            v[tata]=v[fiu];
            tata=fiu;
            fiu=2*fiu;
        } else fiu=n+1;
    }
    v[tata]=a;
}
int extrag()
{
    int a=v[1];
    v[1]=v[n];n--;
    combheap(1,n);
    return a;
}
void afisare()
{
      for(int i=1;i<=n;i++)
    fprintf(g,"%d ",v[i]);
    fprintf(g,"\n");
}