Cod sursa(job #1609417)

Utilizator feli2felicia iuga feli2 Data 22 februarie 2016 19:56:35
Problema Schi Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int n, i, sum, usum;
int aib[30005], a[30005], loc[30005];

int query(int x)
{
    int s=0;
    while(x)
    {
        s+=aib[x];
        x-=x&(-x);
    }
    return s;
}

void update(int poz)
{
    for(int i=poz;i<=n;i+=i&(-i))
    {
        aib[i]+=1;
    }
}

int main()
{
    fin>>n;
    for(i=1;i<=n;i++)
    {
        fin>>a[i];
    }
    for(i=n;i>=1;i--)
    {
        usum=0;
        sum=query(a[i]);
        while(usum!=sum)
        {
            a[i]+=sum-usum;
            usum=sum;
            sum=query(a[i]);
        }
        loc[a[i]]=i;
        update(a[i]);
    }
    for(i=1;i<=n;i++)
        fout<<loc[i]<<'\n';
    return 0;
}