Pagini recente » Cod sursa (job #1676976) | Cod sursa (job #2739864) | Cod sursa (job #68800) | Cod sursa (job #2123291) | Cod sursa (job #1464591)
#include <cstdio>
#define nmax 31000
using namespace std;
short a[nmax],AIB[nmax],N,v[nmax];
inline void Update(int poz , int x){
for(int i = poz; i <= N; i+=(i&-i))
AIB[i]+=x;
}
inline int Compute(int poz){
int s = 0;
for(int i = poz; i; i-=(i&-i))
s+=AIB[i];
return s;
}
int main(){
int i,last,x,j,k;
freopen("schi.in","r",stdin);
freopen("schi.out","w",stdout);
scanf("%d\n",&N);
for(i = 1; i <= N; ++i)
scanf("%d\n",&a[i]);
i = N;
while(i){
last = Compute(a[i]);
x = a[i] + last;
k = a[i];
while(last){
last = Compute(x) - Compute(k);
k = x;
x += last;
}
v[x] = i;
Update(x,1);
--i;
}
for(i = 1; i <= N; ++i)
printf("%d\n",v[i]);
return 0;
}