Pagini recente » Cod sursa (job #2541665) | Cod sursa (job #528602) | Cod sursa (job #1619510) | Cod sursa (job #108699) | Cod sursa (job #2434364)
#include <bits/stdc++.h>
#define maxim 30005
using namespace std;
ifstream f("schi.in");
ofstream g("schi.out");
int a[maxim], n;
int tree[maxim << 2];
int ans[maxim];
void update (int nod, int i, int j, int poz, const int k )
{
if (i==j)
{
tree[nod]=0;
ans[i]=k;
}
else
{
int m=(i+j)/2;
if (poz<=tree[nod*2])
update(nod*2, i, m, poz, k);
else
update(nod* 2+1, m+1, j, poz-tree[nod*2], k);
tree[nod]=tree[nod * 2 ]+tree[nod * 2 + 1 ];
}
}
void create(int nod, int i, int j)
{
if (i==j)
tree[nod]=1;
else
{
int m=(i+j)/2;
create (nod*2, i, m);
create (nod*2+1, m+1, j);
tree[nod]=tree[nod * 2]+tree[nod * 2 + 1];
}
}
int main()
{
f>>n;
create(1 ,1 ,n);
for (int i=1; i <= n; i ++)
f>>a[i];
for (int i=n; i>=1; i --)
update(1, 1, n, a[i], i);
for (int i=1; i <=n; i ++)
g<<ans[i]<<'\n';
}