Pagini recente » Cod sursa (job #259634) | Cod sursa (job #2240951) | Cod sursa (job #10536) | Cod sursa (job #2883806) | Cod sursa (job #2752825)
#include <bits/stdc++.h>
using namespace std;
ifstream f("schi.in");
ofstream g("schi.out");
const int N=3e4+10;
int rez[N],t[N*(N+1)/2],ord,n,poz;
void actualizare(int p,int st,int dr)
{
t[p]++;
if(st==dr)
{
rez[st]=poz;
return;
}
int m=(st+dr)/2;
if(ord<=(m-st+1)-t[2*p])
{
actualizare(2*p,st,m);
}
else
{
ord-=(m-st+1)-t[2*p];
actualizare(2*p+1,m+1,dr);
}
}
int main()
{
f>>n;
stack <int> s;
for(int i=1;i<=n;i++)
{
int x;
f>>x;
s.push(x);
}
poz=n;
while(!s.empty() && poz)
{
int l=s.top();
s.pop();
ord=l;
actualizare(1,1,n);
poz--;
}
for(int i=1;i<=n;i++)
{
g<<rez[i]<<"\n";
}
return 0;
}