Pagini recente » Cod sursa (job #1446798) | Cod sursa (job #162931) | Cod sursa (job #2940376) | Cod sursa (job #1190948) | Cod sursa (job #829326)
Cod sursa(job #829326)
#include <fstream>
#include <iostream>
using namespace std;
int v[65537], s, p;
ifstream in("order.in"); ofstream out("order.out");
void build(int nod, int stg, int dpt)
{
if (stg == dpt)
{
v[nod] = 1;
return;
}
int m = (stg+dpt)>>1, fiu = nod<<1;
build(fiu, stg, m);
build(fiu+1, m+1, dpt);
v[nod] = v[fiu] + v[fiu+1];
}
void del(int nod, int stg, int dpt)
{
if (stg == dpt)
{
v[nod] = 0;
out<<stg<<" ";
return;
}
int m = (stg+dpt)>>1, fiu = nod<<1;
if (s <= v[fiu])
{
del(fiu, stg, m);
--v[nod];
}
else
{
s -= v[fiu];
del(fiu+1, m+1, dpt);
--v[nod];
p += v[fiu];
}
}
int main()
{
int n, i;
in>>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);
}
}