Cod sursa(job #2314860)

Utilizator stan_flaviusStan Flavius Stefan stan_flavius Data 9 ianuarie 2019 04:29:42
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>
#define nmax 500001
#include <limits.h>

using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");

int v[nmax],n,m;
int tree[nmax*10];

void BuildTree(int pos,int node,int left,int right)
{ if(left==right) {tree[node]=pos; return;}
  int mid=(left+right)/2;
  if(pos<=mid) BuildTree(pos,node*2,left,mid);
  else BuildTree(pos,node*2+1,mid+1,right);
  if(v[tree[node*2]]>=v[tree[node*2+1]])
     tree[node]=tree[node*2+1];
  else tree[node]=tree[node*2];
}

int main()
{ int i;
  fin>>n;
  for(i=1; i<=n; i++)
      { fin>>v[i];
        BuildTree(i,1,1,n);
      }

  for(i=1; i<n; i++)
     { fout<<v[tree[1]]<<" ";
       v[tree[1]]=INT_MAX;
       BuildTree(tree[1],1,1,n);
     }
  fout<<v[tree[1]];
    return 0;
}