Pagini recente » Cod sursa (job #495910) | Cod sursa (job #2616907) | Cod sursa (job #2208600) | Cod sursa (job #2194688) | Cod sursa (job #1248389)
#include <cstdio>
#define SIZE 30005
int n, v[SIZE];
int aib[SIZE], sol[SIZE];
void update(int x){
while (x<=n){
++aib[x];
x += ((x^(x-1))+1)>>1;
}
}
int query(int x){
int sum=0;
while (x){
sum += aib[x];
x = x&(x-1);
}
return sum;
}
int main()
{
freopen("schi.in", "r", stdin);
freopen("schi.out", "w", stdout);
scanf("%d", &n);
for (int i=1; i<=n; ++i){
scanf("%d", &v[i]);
}
for (int i=n; i; --i){
int p = v[i]+query(v[i]);
while (sol[p]) ++p;
sol[p] = i;
update(v[i]);
}
for (int i=1; i<=n; ++i){
printf("%d\n", sol[i]);
}
return 0;
}