Pagini recente » Cod sursa (job #221050) | Cod sursa (job #2211953) | Cod sursa (job #2982444) | Cod sursa (job #2593595) | Cod sursa (job #1559085)
#include <fstream>
#include <cmath>
#include <vector>
#include <set>
#include <algorithm>
#include <cstring>
#include <map>
#include <iomanip>
#include <time.h>
#include <stdio.h>
//#include <iostream>
using namespace std;
ifstream cin("algsort.in");
ofstream cout("algsort.out");
int x[500004];
void heap(int x[], int val, int poz)
{
x[poz] = val;
while(x[poz] <= x[poz / 2] && poz / 2 > 0){
swap(x[poz], x[poz / 2]);
poz /= 2;
}
}
void elim(int &n, int x[], int poz)
{
swap(x[poz], x[n]);
n--;
x[n + 1] = 1<<30;
while(poz * 2 <= n && (x[poz] >= x[poz * 2] || x[poz] >= x[poz * 2 + 1]))
{
if(x[poz * 2] <= x[poz * 2 + 1])
{
swap(x[poz], x[poz * 2]);
poz *= 2;
}
else
{
swap(x[poz], x[poz * 2 + 1]);
poz *= 2;
poz++;
}
}
}
int main()
{
int n, a;
cin >> n;
for(int i = 1; i <= 500000; i++)
x[i] = 1<<30;
for(int i = 0; i < n; i++)
{
cin >> a;
heap(x, a, i + 1);
}
while(n != 0){
cout << x[1] << " ";
elim(n, x, 1);
}
return 0;
}