Pagini recente » Cod sursa (job #1816714) | Cod sursa (job #1003492) | Cod sursa (job #2594556) | Cod sursa (job #500848) | Cod sursa (job #1548780)
#include <cstdio>
#define zeros(x) ((-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,rez;
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--){
rez=sum(v[i])+v[i];
while(rez<=n&&v1[rez]>0)
rez++;
v1[rez]=i;
add(v[i],1);
}
for(i=1;i<=n;i++)
fprintf(fout,"%d\n" ,v1[i]);
fclose(fi);
fclose(fout);
return 0;
}