Cod sursa(job #2052000)

Utilizator luanastLuana Strimbeanu luanast Data 29 octombrie 2017 20:35:02
Problema Schi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <fstream>
using namespace std;
ifstream fin ("schi.in");
ofstream fout ("schi.out");
int n,i,p,u,mid,aib[30010],v[30010],sol[30010];

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

int query (int p){
    int r=0;
    for(;p;p-=p&-p)
        r+=aib[p];
    return r;
}

int main(){
    fin>>n;
    for(i=1;i<=n;i++){
        fin>>v[i];
        update(i,1);
    }
    for(i=n;i>=1;i--){
        p=1;
        u=n;
        while(p<=u){
            mid=(p+u)/2;
            if(query(mid)<v[i])
                p=mid+1;
            else
                u=mid-1;
        }
        sol[p]=i;
        update(p,-1);
    }
    for(i=1;i<=n;i++)
        fout<<sol[i]<<"\n";
}