Cod sursa(job #1344102)

Utilizator bogdanpaunFMI Paun Bogdan Gabriel bogdanpaun Data 16 februarie 2015 13:03:16
Problema Schi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <fstream>

using namespace std;
int n,v[30005],a[30005],b[30005];
ifstream f("schi.in");
ofstream g("schi.out");

void update(int pos,int val){
    for(;pos<=n;pos+=pos&-pos) a[pos] += val;
}
int det(int val){
    int sol =0 ,p;
    for(p=1;p<=n; p<<=1) ;
    for(;p;p>>=1){
        if( sol + p <= n && a[sol+p] < val ){
            val -= a[sol+p];
            sol+=p;
        }
    }
    ++sol;
    return sol;

}


int main()
{
    f >> n;
    for(int i=1;i<=n;++i){
        f >> v[i];
        update(i,1);
    }
    for(int i=n;i;i--){
        int pos = det(v[i]);
        b[pos] = i;
        update(pos,-1);
    }
    for(int i=1;i<=n;++i){
        g << b[i]<<" ";
    }

    return 0;
}