Pagini recente » Cod sursa (job #2702190) | Cod sursa (job #888861) | Cod sursa (job #2531235) | Cod sursa (job #2931509) | Cod sursa (job #2625422)
#include <fstream>
using namespace std;
ifstream fin("order.in");
ofstream fout("order.out");
int a[30005], p, n;
void Creare(int nod, int st, int dr) {
int mij;
a[nod] = dr - st + 1;
if( st == dr ) return;
mij = (st + dr) / 2;
Creare(2 * nod, st, mij);
Creare(2 * nod + 1, mij + 1, dr);
}
void Actualizare(int nod, int st, int dr, int poz) {
int mij;
if( st == dr ) {
a[nod] = 0;
fout << st << " ";
return;
}
mij = (st + dr) / 2;
if(p <= poz + a[2 * nod])
Actualizare(2 * nod, st, mij, poz);
else
Actualizare(2 * nod + 1, mij + 1, dr, poz + a[2 * nod]);
a[nod] = a[2 * nod] + a[2 * nod + 1];
}
int main()
{
int i;
fin >> n;
Creare(1, 1, n);
p = 2;
for (i = 0; i < n; i++) {
p = (p + i - 1) % (n - i) + 1;
Actualizare(1, 1, n, 0);
}
return 0;
}