Cod sursa(job #2424393)

Utilizator dinugaftonGafton Dinu dinugafton Data 22 mai 2019 22:51:46
Problema Order Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.68 kb
#include<bits/stdc++.h>
using namespace std;
#define MAX 16
int bit[12005],n,k,k1,pos,rs;
void update(int index, int val){
	while(index<=n){
		bit[index]+=val;
		index+=index&(-index);
	}
}
void aflare(){
	for(int h=16;0<=h;h--){
      if(k1+(1<<h)<n){
        if(rs+bit[k1+(1<<h)]<pos){
          rs+=bit[k1+(1<<h)];
          k1+=(1<<h);
        }
      }
    }
}
int main(){
  ifstream cin("order.in");
  ofstream cout("order.out");
  cin>>n;
  for(int i=1;i<=n;i++)
    update(i,1);
  k=2;
  for(int i=1;i<=n;i++){
    pos=(k+i-2)%(n-i+1)+1;
    rs=0;
    k1=0;
    aflare();
    k++;
    update(k1,-1);
    cout<<k1<<" ";
    k=pos;
  }
  return 0;
}