Cod sursa(job #587255)

Utilizator paul_gabryelPaul Buda paul_gabryel Data 4 mai 2011 14:59:43
Problema Schi Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb

#include <cstdio>
#include <fstream>

using namespace std;

#define N 32768

int adi[N];
int p;

void init (int k,int ft,int bk){

    if(ft==bk){
        adi[k]=1;
        return;
    }
    int md=(ft+bk)>>1;
    init(k<<1,ft,md);
    init((k<<1)+1,md+1,bk);
    adi[k]=adi[k<<1]+adi[(k<<1)+1];

}

void srch (int k,int ft,int bk,int x){

    if(ft==bk){
        p=bk;
        adi[k]=0;
        return;
    }
    int md=(ft+bk)>>1 ;
    if(x<=adi[k<<1])
        srch(k<<1,ft,md,x);
    else
        srch((k<<1)+1,md+1,bk,x-adi[k<<1]);
    adi[k]=adi[k<<1]+adi[(k<<1)+1];

}

int main()
{

    int n,r[N],v[N];
    ifstream in ("schi.in");
        in>>n;
    init(1,1,n);
    for(int i=1;i<=n;++i)
        in>>v[i];
    for(int i=n;i;--i){
        srch(1,1,n,v[i]);
        r[p]=i;
    }
    freopen ("schi.out","w",stdout);
    for(int i=1;i<=n;++i)
        printf("%d\n",r[i]);

return 0;}