Cod sursa(job #3334688)

Utilizator mariusharabariMarius Harabari mariusharabari Data 19 ianuarie 2026 10:27:17
Problema Order Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <bits/stdc++.h>
using namespace std;

ifstream fin("order.in");
ofstream fout("order.out");

const int AMAX = 12e4+1;
int aint[AMAX], n, nex=1;

void constructie(int nod, int l, int r){
    if(l==r)
        aint[nod]=1;
    else{
        int m=(l+r)/2;
        constructie(2*nod, l, m);
        constructie(2*nod+1, m+1, r);
        aint[nod]=aint[2*nod]+aint[2*nod+1];
    }
}

void update(int nod, int l, int r, int poz, int &rez){
    if(l==r){
        aint[nod]=0;
        rez=l;
    }
    else{
        int m=(l+r)/2;
        if(poz<=aint[2*nod])
            update(2*nod, l, m, poz, rez);
        else
            update(2*nod+1, m+1, r, poz-aint[2*nod], rez);
        aint[nod]=aint[2*nod]+aint[2*nod+1];
    }
    //cout<<nod<<' '<<l<<' '<<r<<' '<<aint[nod]<<endl;
}


int main(){
    fin>>n;
    constructie(1, 1, n);
    int val=2;
    for(int i=1; i<=n;i++){
        val=(val+i-1)%(n-i+1);
        int rez;
        if(val==0)
            val=n-i+1;
        //cout<<endl<<i<<' '<<val<<endl;
        update(1, 1, n, val, rez);
        fout<<rez<<' ';

    }
    return 0;
}