Cod sursa(job #3334671)

Utilizator IleaIlea Bogdan Ilea Data 18 ianuarie 2026 23:03:05
Problema Order Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include<iostream>
#include<bitset>
using namespace std;

#define NMAX 30003

int n,aib[NMAX],cn;
bitset<NMAX>b;
void update(int ind,int val){
    for(;ind<=n;ind+=(ind&-ind)){
        aib[ind]+=val;
    }
}
int query(int ind){
    int sum=0;
    for(;ind>0;ind-=(ind&-ind)){
        sum+=aib[ind];
    }
    return sum;
}
int binsearch(int target){
    int st=1,dr=n,ans=-1;
    while(st<=dr){
        int mij=(st+dr)/2;
        int q=query(mij);
        if(target<=q){
            if(q==target)ans=mij;
            dr=mij-1;
        }else{
            st=mij+1;
        }
    }
    return ans;
}
int main(void){
    freopen("order.in","r",stdin);
    freopen("order.out","w",stdout);
    cin>>n;
    for(int i=1;i<=n;++i)update(i,1);
    cn=n;
    int l=1,p=1;
    for(int i=1;i<=n;++i){
        p+=i;
        p%=cn;
        if(!p)p+=cn;
        l=binsearch(p);
        update(l,-1);
        cout<<l<<" ";
        --cn;
        --p;
    }
    return 0;
}