Cod sursa(job #1148117)

Utilizator Al3ks1002Alex Cociorva Al3ks1002 Data 20 martie 2014 14:31:27
Problema Schi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include<cstdio>

using namespace std;
const int NMAX = 30005;

int N,i,poz,P[NMAX],AIB[NMAX],Sol[NMAX];

void Update(int poz,int val)
{
    for(int i=poz;i<=N;i+=i&(-i))
        AIB[i]+=val;
}

int Query(int x)
{
    int r=0;
    for(int step=1<<15;step;step>>=1)
        if(r+step<=N && AIB[r+step]<x)
            r+=step, x-=AIB[r];
    return r+1;
}

int main()
{
	freopen("schi.in","r",stdin);
	freopen("schi.out","w",stdout);

    scanf("%d",&N);
    for(i=1;i<=N;i++) Update(i,1);
    for(i=1;i<=N;i++) scanf("%d",&P[i]);

    for(i=N;i;i--)
    {
        poz=Query(P[i]);
        Sol[poz]=i;
        Update(poz,-1);
    }

    for(i=1;i<=N;i++) printf("%d\n",Sol[i]);

	return 0;
}