Cod sursa(job #1183141)

Utilizator livliviLivia Magureanu livlivi Data 8 mai 2014 15:49:44
Problema Schi Scor 95
Compilator cpp Status done
Runda aib-uri Marime 0.89 kb
#include<cstdio>
#include<fstream>
#define ub(x) (x&(-x))
using namespace std;
int aib[30001];
int n;
int v[30001];
int c[30001];
void add(int x){
    int i;
    for(i=x;i<=n;i+=ub(i))
        ++aib[i];
}
int sum(int x){
    int i,s=0;
    for(i=x;i>0;i-=ub(i))
        s+=aib[i];
    return s;
}
int main(){
    //freopen ("schi.in","r",stdin);
    freopen ("schi.out","w",stdout);
    ifstream in("schi.in");
    //ofstream out("schi.out");
    int i,x,y,z;
    //scanf ("%d",&n);
    in>>n;
    for(i=1;i<=n;i++)
        in>>v[i];
        //scanf ("%d",&v[i]);
    for(i=n;i>0;i--){
        int s1=sum(v[i]);
        x=v[i]+s1;
        y=s1;
        z=sum(x);
        while(y!=z){
            y=z;
            x=v[i]+y;
            z=sum(x);
        }
        c[x]=i;
        add(x);
    }
    for(i=1;i<=n;i++)
        printf ("%d\n",c[i]);
    return 0;
}