Pagini recente » Cod sursa (job #3240801) | Cod sursa (job #2783710) | Cod sursa (job #569960) | Cod sursa (job #2343665) | Cod sursa (job #2645194)
#include <fstream>
using namespace std;
ifstream fin ("order.in");
ofstream fout ("order.out");
int game[31000],n;
void gameStepUp(int position, int x)
{
for (int i = position; i <= n; i += (i & -i))
game[i] += x;
}
int findPosition(int position)
{
int i = 0;
for (int p = 1 << 15; p; p >>= 1)
if (i + p <= n && game[i + p] < position)
{
position -= game[i + p];
i += p;
}
return i + 1;
}
int main()
{
fin >> n;
for (int i = 1; i <= n; ++i)
gameStepUp(i, 1);
int k = 1, nr = n;
for (int i = 1; i <= n; ++i)
{
k += i;
k %= nr;
if(k == 0)
k = nr;
int aux = findPosition(k);
gameStepUp(aux, -1);
nr -= 1;
k -= 1;
fout << aux << " ";
}
return 0;
}