Pagini recente » Cod sursa (job #873600) | Istoria paginii utilizator/carmi | Cod sursa (job #2078252) | Cod sursa (job #1729596) | Cod sursa (job #1947981)
#include <bits/stdc++.h>
using namespace std;
int n;
int t[30003];
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() {
freopen("order.in","r",stdin);
freopen("order.out","w",stdout);
cin >> 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);
cout << hi << " ";
}
}