Cod sursa(job #1548809)

Utilizator PopoviciRobertPopovici Robert PopoviciRobert Data 11 decembrie 2015 15:33:35
Problema Schi Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <cstdio>
#define zeros(x) (((x-1)^x)&x)
#define MAXN 30000
int aib[MAXN+1],v[MAXN+1],v1[MAXN+1],n;
inline void add(int x,int nr){
    for(int i=x;i<=n;i+=zeros(i))
        aib[i]+=nr;
}
inline int sum(int x){
   int s=0;
   for(int i=x;i>0;i-=zeros(i))
        s+=aib[i];
   return s;
}
int main(){
    FILE*fi,*fout;
    int i,rez;
    fi=fopen("schi.in" ,"r");
    fout=fopen("schi.out" ,"w");
    fscanf(fi,"%d" ,&n);
    for(i=1;i<=n;i++)
       fscanf(fi,"%d" ,&v[i]);
    for(i=n;i>0;i--){
        rez=sum(v[i])+v[i];
        while(rez<=n&&v1[rez]>0)
            rez++;
        v1[rez]=i;
        add(v[i],1);
    }
    for(i=1;i<=n;i++)
      fprintf(fout,"%d\n" ,v1[i]);
    fclose(fi);
    fclose(fout);
    return 0;
}