Cod sursa(job #2897974)

Utilizator World_shifterMurgu Bogdan World_shifter Data 5 mai 2022 16:23:55
Problema Sortare prin comparare Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>

using namespace std;

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

int nh,h[500000],v[500000];

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

void coboara(int p){
    int fs=2*p,fd=2*p+1,bun=p;
    if(fs<=nh && h[fs]<h[bun]){
        bun=fs;
    }
    if(fd<=nh && h[fd]<h[bun]){
        bun=fd;
    }
    if(bun!=p){
        swap(h[bun],h[p]);
        coboara(bun);
    }
}

void adauga(int val){
    h[++nh]=val;
    urca(nh);
}

void sterge(int p){
    if(p==nh){
        nh--;
    }
    h[p]=h[nh--];
    urca(p);
    coboara(p);
}

int main()
{
    int n,val;
    in>>n;
    for(int i=0; i<n; i++){
        in>>val;
        adauga(val);
    }
    //n=0;
    for(int i=0; i<n; i++){
        v[i]=h[1];
        sterge(1);
    }
    for(int i=0; i<n; i++){
        out<<v[i]<<" ";
    }
    return 0;
}