Pagini recente » Cod sursa (job #1631370) | Cod sursa (job #3282565) | Cod sursa (job #446962) | Cod sursa (job #552681) | Cod sursa (job #1434836)
#include <fstream>
using namespace std;
fstream fin("order.in", ios::in);
fstream fout("order.out", ios::out);
#define MAXN 30005
int T[4 * MAXN + 10], N, val, l_val = 2, no;
void build(int node, int l, int r)
{
if (l == r) { T[node] = 1; return; }
int mid = (l + r) / 2;
build(node * 2, l, mid);
build(node * 2 + 1, mid + 1, r);
T[node] = T[node * 2] + T[node * 2 + 1];
}
void update(int node, int l, int r)
{
if (l == r) { T[node] = 0; no = l; return; }
int mid = (l + r) / 2;
if (T[node * 2] >= val) update(node * 2, l, mid);
else val -= T[node * 2], update(node * 2 + 1, mid + 1, r);
T[node] = T[node * 2 + 1] + T[node * 2];
}
int main()
{
fin >> N;
build(1, 1, N);
for (int i = 1; i <= N; ++i){
val = l_val + i - 1;
val %= T[1];
if (!val) val = T[1];
l_val = val;
update(1, 1, N);
fout << no << " ";
}
fin.close();
fout.close();
return 0;
}