Pagini recente » Cod sursa (job #1986911) | Cod sursa (job #706210) | Cod sursa (job #2184478) | Cod sursa (job #1237501) | Cod sursa (job #856187)
Cod sursa(job #856187)
#include <fstream>
#include <iostream>
using namespace std;
int v[65537], s, p;
ifstream fin("order.in");
ofstream fout("order.out");
void build(int nod, int st, int dr)
{
if (st == dr)
{
v[nod] = 1;
return;
}
int m = (st+dr)>>1, f = nod<<1;
build(f, st, m);
build(f+1, m+1, dr);
v[nod] = v[f] + v[f+1];
}
void del(int nod, int st, int dr)
{
if (st == dr)
{
v[nod] = 0;
fout<<st<<" ";
return;
}
int m = (st+dr)>>1, f = nod<<1;
if (s <= v[f])
{
del(f, st, m);
--v[nod];
}
else
{
s -= v[f];
del(f+1, m+1, dr);
--v[nod];
p += v[f];
}
}
int main()
{
int n, i;
fin>>n;
build(1, 1, n);
p = 1;
for (i=1;v[1];++i)
{
s = (p+i)%v[1];
if (!s) s = v[1];
p = 0;
del(1, 1, n);
}
}