Pagini recente » Clasament easyoji | Cod sursa (job #1707548) | Cod sursa (job #1627015) | Cod sursa (job #846288) | Cod sursa (job #1183141)
#include<cstdio>
#include<fstream>
#define ub(x) (x&(-x))
using namespace std;
int aib[30001];
int n;
int v[30001];
int c[30001];
void add(int x){
int i;
for(i=x;i<=n;i+=ub(i))
++aib[i];
}
int sum(int x){
int i,s=0;
for(i=x;i>0;i-=ub(i))
s+=aib[i];
return s;
}
int main(){
//freopen ("schi.in","r",stdin);
freopen ("schi.out","w",stdout);
ifstream in("schi.in");
//ofstream out("schi.out");
int i,x,y,z;
//scanf ("%d",&n);
in>>n;
for(i=1;i<=n;i++)
in>>v[i];
//scanf ("%d",&v[i]);
for(i=n;i>0;i--){
int s1=sum(v[i]);
x=v[i]+s1;
y=s1;
z=sum(x);
while(y!=z){
y=z;
x=v[i]+y;
z=sum(x);
}
c[x]=i;
add(x);
}
for(i=1;i<=n;i++)
printf ("%d\n",c[i]);
return 0;
}