Pagini recente » Cod sursa (job #253624) | Cod sursa (job #1708804) | Cod sursa (job #713758) | Cod sursa (job #985791) | Cod sursa (job #1264271)
#incude <cstdio>
using namespace std;
const long nmax=30007;
long aib[nmax],a[nmax],ans[nmax],n,i;
void update (long poz, long val)
{
for(;poz<=n;poz+=poz&(poz-1)^poz)
aib[poz]+=val;
}
long query (long poz){
long sum=0;
for(;poz>0;poz-=poz&(poz-1)^poz)
sum+=aib[poz];
return sum;
}
long binary_search (long val)
{
int st=1,dr=n;
while(st<=dr){
int med=(st+dr)>>1;
if(val<=query(med))
dr=med-1;
else
st=med+1;
}
return st;
}
}
int main () {
freopen("schi.in","r",stdin);
freopen("schi.out","w",stdout);
scanf("%ld",&n);
for(i=1;i<=n;i++)
{
scanf("%ld",&a[i]);
update(a[i],1);
}
for(i=n;i>=1;i--)
{
long poz;
poz=binary_search(a[i]);
ans[poz]=i;
update(poz,-1);
}
for(i=1;i<=n;i++)
printf("%ld\n",ans[i]);
return 0;
}