Cod sursa(job #1464593)

Utilizator andreey_047Andrei Maxim andreey_047 Data 23 iulie 2015 22:48:14
Problema Schi Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <cstdio>
#define nmax 31000

using namespace std;
int a[nmax],AIB[nmax],N,v[nmax];
inline void Update(int poz , int x){
 for(int i = poz; i <= N; i+=(i&-i))
    AIB[i]+=x;
}
inline int Compute(int poz){
 int s = 0;
  for(int i = poz; i; i-=(i&-i))
    s+=AIB[i];
  return s;
}
int main(){
    int i,last,x,k;
    freopen("schi.in","r",stdin);
    freopen("schi.out","w",stdout);

    scanf("%d\n",&N);
    for(i = 1; i <= N; ++i)
        scanf("%d\n",&a[i]);
     i = N;

    while(i){
      last = Compute(a[i]);
      x = a[i] + last;
      k = a[i];
      while(last){
         last = Compute(x) - Compute(k);
         k = x;
         x += last;
      }
      v[x] = i;
      Update(x,1);
      --i;
    }
    for(i = 1; i <= N; ++i)
        printf("%d\n",v[i]);
    return 0;
}