Cod sursa(job #1042916)

Utilizator Dayanna000Amegica Dayanna Dayanna000 Data 27 noiembrie 2013 19:47:50
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.51 kb
#include <iostream>
#include <fstream>
using namespace std;
void next(int a[],int n)
  {
      int i,ok=1,pozi=0,huh;
      i=1;
      while(ok==1)
        {
            if(2*i<=n && 2*i+1<=n)
               {
                   if(a[2*i]<a[2*i+1])
                     pozi=2*i;
                     else
                     pozi=2*i+1;
                   if(a[i]<a[pozi])
                     pozi=0;
               }
               else
            if(2*i<=n && a[2*i]<a[i])
              pozi=2*i;
               else
            if(2*i+1<=n && a[2*i+1]<a[i])
               pozi=2*i+1;
            if(pozi==0)
               ok=0;
               else
               {
                   huh=a[i];
                   a[i]=a[pozi];
                   a[pozi]=huh;
                   i=pozi;
                   pozi=0;
               }
        }
  }
int main()
{
    ifstream f("algsort.in");
    ofstream g("algsort.out");
    int n,a[500006],i,poz,x,aux;
    f>>n>>a[1];
    for(i=2;i<=n;i++)
      {
          f>>a[i];
          x=i;
          poz=i/2;
          while(poz>=1)
            {
                if(a[x]<a[poz])
                  {
                      aux=a[poz];
                      a[poz]=a[x];
                      a[x]=aux;
                  }
                x=poz;
                poz=poz/2;

            }
      }
    while(n>1)
      {
          g<<a[1]<<"  ";
          a[1]=a[n];
          n--;
          if(n>1)
            next(a,n);
      }
    g<<a[1];
    f.close();
    g.close();
    return 0;
}