Cod sursa(job #2047998)

Utilizator circeanubogdanCirceanu Bogdan circeanubogdan Data 25 octombrie 2017 18:06:20
Problema Schi Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <fstream>
#define DIM 30002

using namespace std;

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

short int n, v[DIM], vsort[DIM], aib[DIM];

void update(short int nod){
    for(; nod <= n; nod += (nod & -nod))
        ++ aib[nod];
}

short int query(short int nod){
    short int s = 0;
    for(; nod >= 1; nod -= (nod & -nod))
        s += aib[nod];
    return s;
}

int main()
{
    f>>n;
    for(int i = 1; i <= n; ++ i)
        f>>v[i];
    for(int i = n; i >= 1; -- i){
        short int val = query(v[i]);
        short int init = v[i];
        v[i] = init + val;
        short int a = query(v[i]);
        while(v[i] != init + a){
            v[i] = init + a;
            a = query(v[i]);
        }
        vsort[v[i]] = i;
        update(v[i]);
    }
    for(int i = 1; i <= n; ++ i)
        g<<vsort[i]<<'\n';
    return 0;
}