Cod sursa(job #745193)

Utilizator memaxMaxim Smith memax Data 10 mai 2012 18:21:42
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.41 kb
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;

void add(int k);
vector<int> q(1);
void de(int i);

int main(){
    ifstream cinr ("algsort.in");
    ofstream cour ("algsort.out");
    int n, a;
    q[0]=-1;
    cinr >> n;
    for(int i=1; i<=n; i++){
            cinr >> a;
            add(a);
            }
    for(int i=1; i<=n; i++){
            cour << q[1] << " ";
            q[1]=q[q.size()-1];
            q.pop_back();
            de(1);
            }
    
    return 0;
    }

void de(int i){
     int w,t,y,s=q.size();
     while(2*i+1<s){
                    t=2*i;
                    if(q[t]>q[t+1]){ t++; }
                    if(q[i]>q[t]){
                                  w=q[t];
                                  q[t]=q[i];
                                  q[i]=w;
                                  i=t;
                                  }
                    else { return; }
                    }
     if(2*i<s){
              if(q[i]>q[2*i]){
              w=q[i];
              q[i]=q[2*i];
              q[2*i]=w;
                       }
              }
     }    

void add(int k){
     q.push_back(k);
     int y,i=q.size()-1;
     while(q[i/2]>q[i]){
                        y=q[i/2];
                        q[i/2]=q[i];
                        q[i]=y;
                        i/=2;
                        }
     }