Pagini recente » Cod sursa (job #2316565) | Cod sursa (job #1861575) | Cod sursa (job #2811109) | Cod sursa (job #2866322) | Cod sursa (job #2108217)
#include<fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int v[500005],a[5000005];
int update(int pos,int nod,int l,int r)
{
int mid=(l+r)/2;
if(r==l){
a[nod]=pos;
return pos;
}
if(pos<=mid)update(pos,2*nod,l,mid);
else update(pos,2*nod+1,mid+1,r);
if(v[a[2*nod]]<v[a[2*nod+1]])a[nod]=a[2*nod];
else a[nod]=a[2*nod+1];
}
int main()
{
int n,i,maxim=0;
f>>n;
for(i=1;i<=n;i++)
{f>>v[i];
if(v[i]>maxim)maxim=v[i];}
for(i=1;i<=n;i++)
update(i,1,1,n);
for(i=1;i<=n;i++)
{
g<<v[a[1]]<<" ";
v[a[1]]=maxim;
update(a[1],1,1,n);
}
return 0;
}