Pagini recente » Cod sursa (job #1453504) | Cod sursa (job #1202857) | Cod sursa (job #1459044) | Cod sursa (job #2293406) | Cod sursa (job #1548821)
#include <cstdio>
#define zeros(x) (((x-1)^x)&x)
#define MAXN 30000
int aib[MAXN+1],v[MAXN+1],v1[MAXN+1],n;
inline void add(int x,int nr){
for(int i=x;i<=n;i+=zeros(i))
aib[i]+=nr;
}
inline int sum(int x){
int s=0;
for(int i=x;i>0;i-=zeros(i))
s+=aib[i];
return s;
}
int main(){
FILE*fi,*fout;
int i,flag,nr;
fi=fopen("schi.in" ,"r");
fout=fopen("schi.out" ,"w");
fscanf(fi,"%d" ,&n);
for(i=1;i<=n;i++)
fscanf(fi,"%d" ,&v[i]);
for(i=n;i>0;i--){
flag=1;
int x=v[i];
while(flag){
nr=v[i];
v[i]=x+sum(v[i]);
if(v[i]==nr)
flag=0;
}
add(v[i],1);
}
for(i=1;i<=n;i++)
v1[v[i]]=i;
for(i=1;i<=n;i++)
fprintf(fout,"%d\n" ,v1[i]);
fclose(fi);
fclose(fout);
return 0;
}