Cod sursa(job #1042470)

Utilizator vlad.florescu94FMI Florescu Vlad - Adrian vlad.florescu94 Data 27 noiembrie 2013 02:31:28
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include<fstream>
#include<algorithm>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int heap[500001],i,nr,n,mini;
bool ok;
int minm(int a,int b)
{
    if(heap[a]<heap[b])
        return a;
    return b;
}
int main()
{
    f>>n;
    f>>heap[1];
    for(i=2;i<=n;i++)
    {
        f>>heap[i];
        while(heap[i]<heap[i/2])
            swap(heap[i],heap[i/2]);
    }
  // for(i=1;i<=n;i++)
    // g<<heap[i]<<" ";
    while(n>=2)
   {
       ok=1;i=1;
       g<<heap[1]<<" ";
       heap[1]=heap[n];n--;
       while(i*2+1<=n)
        {
           mini=minm(i*2,i*2+1);
           if(heap[i]>heap[mini])
            {swap(heap[i],heap[mini]);i=mini;}
           else
            {ok=0;break;}
        }
       if(ok)
         if(i*2==n)
          {
            if(heap[i]>heap[i*2])
                swap(heap[i],heap[i*2]);
          }
   }
   g<<heap[1]<<" ";
   f.close();g.close();
   return 0;
}