Cod sursa(job #1041982)

Utilizator WyvernFMI Stanescu Leonard Wyvern Data 26 noiembrie 2013 13:50:08
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.17 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fi("algsort.in");
ofstream fo("algsort.out");
int v[200002],w[200002],n,x;

void stergere(int i) {
    if ((v[2*i]==0)&&(v[2*i+1]==0))
        v[i]=0;
    else
        if ((v[2*i]==0)&&(v[2*i+1]!=0)) {
            v[i]=v[2*i+1];
            v[2*i+1]=0;
        }
        else
            if ((v[2*i]!=0)&&(v[2*i+1]==0)) {
                v[i]=v[2*i];
                v[2*i]=0;
            }
            else
                if (v[2*i]<v[2*i+1]) {
                    v[i]=v[2*i];
                    stergere(2*i);
                }
                else {
                    v[i]=v[2*i+1];
                    stergere(2*i+1);
                }
}

int main()
{
    fi>>n;
    for (int i=1;i<=n;i++) {
        fi>>x;
        if (v[i/2]<=x)
            v[i]=x;
        else {
            int j=i;
            while (v[j/2]>x) {
                v[j]=v[j/2];
                v[j/2]=x;
                j=j/2;
            }
        }
    }
    for (int i=1;i<=n;i++) {
        w[i]=v[1];
        stergere(1);
    }
    for (int i=1;i<=n;i++)
        fo<<w[i]<<' ';
    return 0;
}