Cod sursa(job #2558898)

Utilizator Rares31100Popa Rares Rares31100 Data 26 februarie 2020 21:08:49
Problema Schi Scor 95
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <bits/stdc++.h>

using namespace std;

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

int n,a[30001];
int tree[30001];
int sol[30001];

int sumPart(int poz)
{
    int sum=0;

    while(poz)
    {
        sum+=tree[poz];
        poz-=poz&-poz;
    }

    return sum;
}

int suma(int st,int dr)
{
    return sumPart(dr)-sumPart(st-1);
}

void adauga(int poz,int val)
{
    while(poz<=n)
    {
        tree[poz]+=val;
        poz+=poz&-poz;
    }
}

int main()
{
    in>>n;
    for(int i=1;i<=n;i++)
        in>>a[i];

    for(int i=n;i>=1;i--)
    {
        int st=1,dr=a[i];
        int add=suma(st,dr);

        while( add )
        {
            st=dr+1;
            dr+=add;
            add=suma(st,dr);
        }

        sol[dr]=i;
        adauga(dr,1);
    }

    for(int i=1;i<=n;i++)
        out<<sol[i]<<'\n';

    return 0;
}