Cod sursa(job #932305)

Utilizator auRSTARHreapca Aurelian auRSTAR Data 28 martie 2013 20:24:21
Problema Schi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include<cstdio>
int n,pow,A[70010],i,V[30010],SOL[30010],query(int,int,int,int);
int main()
{
    freopen("schi.in","r",stdin);
    freopen("schi.out","w",stdout);
    scanf("%d",&n);
    for(pow=2;pow<n;pow<<=1);
    for(i=1;i<=n;i++)scanf("%d",&V[i]);
    for(i=pow;i<pow+n;i++)A[i]=1;
    for(i=pow-1;i>=1;i--)A[i]=A[i+i]+A[i+i+1];
    for(i=n;i>=1;i--)
        SOL[query(1,1,pow,V[i])]=i;
    for(i=1;i<=n;i++)printf("%d\n",SOL[i]);
    return 0;
}
int query(int p,int X,int Y,int val)
{
    --A[p];
    if(X==Y)return X;
    if(val<=A[p+p])return query(p+p,X,(X+Y)/2,val); else return query(p+p+1,(X+Y)/2+1,Y,val-A[p+p]);
}