Pagini recente » Cod sursa (job #577739) | Cod sursa (job #2787185) | Cod sursa (job #3163796) | Cod sursa (job #336102) | Cod sursa (job #2940760)
#include<bits/stdc++.h>
#define int long long
using namespace std;
ifstream f("schi.in");
ofstream g("schi.out");
int n,v[30005],aib[35],ans[30005],pw;
void update(int poz,int val)
{
int i;
for(i=poz;i<=n;i+=i&-i)
aib[i]+=val;
}
int find_poz(int x)
{
int p=pw,poz=0;
while(p>0)
{
if(aib[poz+p]<x)
x-=aib[poz+p],poz+=p;
p/=2;
while(poz+p>n && p>1)
p/=2;
}
return poz+1;
}
signed main()
{
int i,poz;
f>>n;
for(i=1;i<=n;i++)
f>>v[i],update(i,1);
pw=1;
while(pw<=n)
pw*=2;
pw/=2;
for(i=n;i>=1;i--)
{
poz=find_poz(v[i]);
update(poz,-1);
ans[poz]=i;
}
for(i=1;i<=n;i++)
g<<ans[i]<<'\n';
return 0;
}