Cod sursa(job #1056838)

Utilizator geo.cristinaOana Georgiana-Cristina geo.cristina Data 14 decembrie 2013 13:46:12
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("algsort.in");
ofstream g("algsort.out");

int heap[500001],n,nr,x;


void urca(int n,int poz)
{
    while(poz>1 && heap[poz]<heap[poz/2])
    {
        swap(heap[poz],heap[poz/2]);
        poz=poz/2;
    }
}

void coboara(int n, int poz)
{
    if(poz*2>n) return;
    int poz1=poz*2;
    if(heap[poz*2+1]<heap[poz*2])
       poz1=poz*2+1;
    if(heap[poz1]<heap[poz])
    {
        swap(heap[poz1],heap[poz]);
        coboara(n,poz1);
    }

}

void heap_c(int &n,int val)
{
    heap[++n]=val;
    urca(n,n);
}

void delete_min(int &n)
{
    heap[1]=heap[n--];
    coboara(n,1);
}

int main()
{
    int i;
    f>>nr;
    for(i=1;i<=nr;i++)
      {
          f>>x;
          heap_c(n,x);
      }
    for(i=1;i<=nr;i++)
      {
          g<<heap[1]<<" ";
          delete_min(n);
      }
    return 0;
}