Cod sursa(job #2047996)

Utilizator circeanubogdanCirceanu Bogdan circeanubogdan Data 25 octombrie 2017 18:04:51
Problema Schi Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>
#define DIM 30002

using namespace std;

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

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

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

int query(int nod){
    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){
        int val = query(v[i]);
        int init = v[i];
        v[i] = init + val;
        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;
}