Cod sursa(job #1074518)

Utilizator anca1243Popescu Anca anca1243 Data 7 ianuarie 2014 18:37:25
Problema Schi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("schi.in");
ofstream out("schi.out");
const int N=300003;
int n,t[N],v[N],f[N],x,val,poz;

void query(int p,int st,int dr)
{
    if(st==dr)
    {
        t[p]++;
        poz=st;
        return;
    }
    int m=(st+dr)/2,m1,m2;
    if(x<=m-st+1-t[p])
        query(2*p,st,m);
    else
        {
            x-=m-st+1-t[p];
            query(2*p+1,m+1,dr);
        }
    t[p]++;
}
void update(int p,int st,int dr)
{
}

int main()
{
    in>>n;
    for(int i=1;i<=n;i++)
        in>>v[i];
    for(int i=n;i>=1;i--)
    {
        x=v[i];
        query(1,1,n);
        f[poz]=i;
    }
    for(int i=1;i<=n;i++)
        out<<f[i]<<' ';
    return 0;
}