Cod sursa(job #1066730)

Utilizator NCodeMihai X NCode Data 25 decembrie 2013 15:18:05
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <iostream>
#include <fstream>
using namespace std;

int heap[500008],n,nr,x;//n

void up_heap(int n,int poz)
{
    while(poz>1 && heap[poz]<heap[poz/2])
    {
        swap(heap[poz],heap[poz/2]);
        poz=poz/2;
    }
}
 
void down_heap(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]);
        down_heap(n,poz1);
    }
 
}
 
void ins_heap(int &n,int val)
{
    heap[++n]=val;
    up_heap(n,n);
}
 
void del_heap(int &n)
{
    heap[1]=heap[n--];
    down_heap(n,1);
}
 
int main()
{
   ifstream in("algsort.in");
  ofstream out("algsort.out");
    int i;
    in>>nr;
    for(i=1;i<=nr;i++)
      {
          in>>x;
          ins_heap(n,x);
      }
    for(i=1;i<=nr;i++)
      {
          out<<heap[1]<<" ";
          del_heap(n);
      }
      in.close();
    out.close();
    return 0;
}