Pagini recente » Cod sursa (job #2391570) | kingoni | Cod sursa (job #1850645) | Arhiva de probleme | Cod sursa (job #1761621)
#include <bits/stdc++.h>
using namespace std;
ifstream f("schi.in");
ofstream g("schi.out");
int n,i,t[30010],ans[30010],v[120010];
void update(int nod, int st, int dr, int poz, int x)
{
if(st==dr)
{
v[nod]=x;
return;
}
int mid=(st+dr)>>1;
if(poz<=mid)
update(2*nod, st, mid, poz, x);
else
update(2*nod+1, mid+1, dr, poz, x);
v[nod] = v[2*nod] + v[2*nod+1];
}
void query(int nod, int st, int dr, int x)
{
if(st==dr)
{
v[nod]=0;
ans[st]=i;
return;
}
int mid=(st+dr)>>1;
if(x <= v[2*nod])
query(2*nod, st, mid, x);
else
query(2*nod+1, mid+1, dr, x-v[2*nod]);
v[nod]=v[2*nod]+v[2*nod+1];
}
int main()
{
f>>n;
for(i=1;i<=n;++i)
{
f>>t[i];
update(1, 1, n, i, 1);
}
for(i=n;i;--i)
query(1, 1, n, t[i]);
for(i=1;i<=n;++i)
g<<ans[i]<<'\n';
return 0;
}