Cod sursa(job #3260355)

Utilizator paull122Paul Ion paull122 Data 1 decembrie 2024 20:39:57
Problema Schi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <bits/stdc++.h>

#define VMAX 100000
#define NMAX 30000
#define LOG 20

#define INF (long long)(1e9)
#define MOD 100003
#define BASE 23

#define BLOCK_SIZE 230
#define ll long long int


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



int a[NMAX+1];
int q[NMAX+1];
int n;
int aib[NMAX+1];

void update(int p,int x)
{
    for(int i=p;i<=n;i+=i&-i)
    {
        aib[i] += x;
    }
}

int main()
{
    fin >> n;
    for(int i=1;i<=n;i++)
    {
        fin >> q[i];
        update(i,1);
    }
    for(int i=n;i>=1;i--)
    {
        int pos=0,sum=0;
        for(int j=LOG;j>=0;j--)
        {
            if(pos+(1<<j) <= n && sum + aib[pos + (1<<j)] < q[i])
            {
                pos += 1<<j;
                sum += aib[pos];
            }
        }
        a[pos+1]=i;
        update(pos+1,-1);
    }
    for(int i=1;i<=n;i++)
    {
        fout << a[i] << "\n";
    }

    /// 3 4 2 1 2
    ///

}