Pagini recente » Cod sursa (job #566022) | Cod sursa (job #2532024) | Cod sursa (job #537608) | Cod sursa (job #2803737) | Cod sursa (job #2314860)
#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;
}