Pagini recente » Borderou de evaluare (job #1740844) | Borderou de evaluare (job #1316839) | Borderou de evaluare (job #2327797) | Borderou de evaluare (job #2829227) | Cod sursa (job #2314859)
#include <fstream>
#define nmax 500001
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;
}