Cod sursa(job #976015)

Utilizator Daniel3717Aleca Daniel Adrian Daniel3717 Data 22 iulie 2013 12:11:05
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
#include <iostream>
#include <fstream>
using namespace std;
unsigned int v[500001],ax;
unsigned int i,p,n;
int main(void)
{
    FILE * f;
    f=fopen("algsort.in","r");
    ofstream g("algsort.out");
    fscanf(f,"%d",&n);
    v[0]=0;
    for (i=1;i<=n;i++)
    {
        fscanf(f,"%ud",&ax);
        v[i]=ax;
        p=i;
        while (v[p]<v[p/2])
        {
            ax=v[p];
            v[p]=v[p/2];
            v[p/2]=ax;
            p=p/2;
        }
    }
    while (n>1)
    {
        g<<v[1]<<' ';
        v[1]=v[n];
        n--;
        p=1;
        while (((v[(p*2)%500001]<v[p])&&(p*2<=n))||((v[(p*2+1)%500001]<v[p])&&(p*2+1<=n)))
        {
            if (((v[(p*2)%500001]<=v[(p*2+1)%500001])&&(p*2<=n))||(p*2+1>n))
            {
                ax=v[p];
                v[p]=v[p*2];
                v[p*2]=ax;
                p=p*2;
            }
            else
            {
                ax=v[p];
                v[p]=v[p*2+1];
                v[p*2+1]=ax;
                p=p*2+1;
            }
        }
    }
    g<<v[1];
    g.close();
    return 0;
}