Cod sursa(job #1060154)

Utilizator redls_95Nechita Laura redls_95 Data 17 decembrie 2013 18:11:40
Problema Schi Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <cstdio>
using namespace std;
int a,b,poz,start;
int t[30002],vect[30002],rez[30002];
int maxim(int x,int y) {
    return x+y;
}

void update(int p,int st,int dr) {
    if (st==dr) {
        t[p]=1;
        rez[st] = start;
        return;
    }
    int m=(st+dr)/2;
    if (m-st+1-t[2*p]>=poz) update(2*p,st,m);
    else
    {
        poz -= m-st+1-t[2*p];
        update(2*p+1,m+1,dr);
    }
    t[p]=t[2*p]+t[2*p+1];
}
int main() {
    freopen("schi.in","r",stdin);
    freopen("schi.out","w",stdout);
    int n,i,k;
    scanf("%d",&n);
    for(i=1; i<=n; i++) {
        scanf("%d",&k);
        vect[i]=k;
    }
    for(i=n; i>=1; i--) {
              poz = vect[i];
              start = i;
              update(1,1,n);
    }
    for(i=1;i<=n;i++) printf("%d\n",rez[i]);
    return 0;
}