Pagini recente » Cod sursa (job #2212008) | Cod sursa (job #2038688) | Cod sursa (job #1831005) | Cod sursa (job #2979423) | Cod sursa (job #2290213)
#include <bits/stdc++.h>
using namespace std;
ifstream in("order.in");
ofstream out("order.out");
int n,t[30000];
void update(int idx){
for(; idx<=n; idx+=(idx&-idx))
t[idx]++;
}
int get(int idx){
int res=0;
for(;idx;idx-=(idx&-idx))
res+=t[idx];
return res;
}
int main()
{
in >> n;
int x = 2;
for(int i=1, cn=n; i<=n; i++, cn--){
x = (x-1+i)%cn;
if(x==0) x = cn;
int lo=1, hi=n;
while(lo<hi){
int mi=(lo+hi)/2;
if(mi-get(mi)<x) lo = mi+1;
else hi=mi;
}
update(lo);
out << hi << " ";
}
}