Cod sursa(job #2123897)

Utilizator alexilasiAlex Ilasi alexilasi Data 6 februarie 2018 18:32:08
Problema Schi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("schi.in");
ofstream fout("schi.out");

int n,x,i;

int a[30001],ans[30001],v[120010];

void build(int nod,int l,int r,int x)
{
    if(l==r)
    {
        v[nod]=1;
        return ;
    }
    int m=(l+r)/2;
    if(x<=m)
        build(nod*2,l,m,x);
    else build(nod*2+1,m+1,r,x);
    v[nod]=v[nod*2]+v[nod*2+1];
}

void query(int nod,int l,int r,int val,int poz)
{
    if(l==r)
    {
        ans[l]=poz;
        v[nod]=0;
        return ;
    }
    int m=(l+r)/2;
    if(val<=v[nod*2])
        query(nod*2,l,m,val,poz);
    else query(nod*2+1,m+1,r,val-v[nod*2],poz);
    v[nod]=v[nod*2]+v[nod*2+1];
}

int main()
{
    fin>>n;
    for(i=1;i<=n;i++)
    {
        build(1,1,n,i);
        fin>>a[i];
    }
    for(i=n;i>0;i--)
    {
        query(1,1,n,a[i],i);
    }
    for(i=1;i<=n;i++)
        fout<<ans[i]<<'\n';
    return 0;
}