Cod sursa(job #1776374)

Utilizator nnnmmmcioltan alex nnnmmm Data 11 octombrie 2016 11:02:07
Problema Schi Scor 100
Compilator cpp Status done
Runda cerculdeinfo-lectia2-arborideintervale Marime 0.71 kb
#include<cstdio>
int v[30001],arbint[4*30002],rasp[30001];
void update(int nod,int st,int dr,int poz,int val)
{
 if(st==dr)
    {
     rasp[st]=val;
     arbint[nod]=1;
     return;
    }
 int mij=(st+dr)/2;
 if(mij-st+1-arbint[2*nod]>=poz)
    update(2*nod,st,mij,poz,val);
 else
    update(2*nod+1,mij+1,dr,poz-(mij-st+1-arbint[2*nod]),val);
 arbint[nod]=arbint[2*nod]+arbint[2*nod+1];
}
int main()
{
 freopen("schi.in","r",stdin);
 freopen("schi.out","w",stdout);
 int n;
 scanf("%d ",&n);
 for(int i=1;i<=n;i++)
     scanf("%d ",&v[i]);
 for(int i=n;i>=1;i--)
     update(1,1,n,v[i],i);
 for(int i=1;i<=n;i++)
     printf("%d\n",rasp[i]);
 fclose(stdin);
 fclose(stdout);
 return 0;
}