Pagini recente » Cod sursa (job #1502158) | Cod sursa (job #1951248) | Cod sursa (job #180780) | Cod sursa (job #1766760) | Cod sursa (job #1878560)
#include <iostream>
#include <fstream>
#define NMAX 1000005
using namespace std;
ifstream f ("curcubeu.in");
ofstream g ("curcubeu.out");
int a[NMAX], b[NMAX], c[NMAX], n, boss[NMAX], v[NMAX];
int Boss(int x)
{
if (boss[x] == 0) return x;
boss[x] = Boss(boss[x]);
return boss[x];
}
void Union (int left, int right, int color)
{
while (left <= right){
if (v[left] != 0){
left = Boss (left);
}
if (left <= right){
v[left] = color;
boss[left] = right + 1;
left ++;
}
}
}
int main()
{
f>>n>>a[1]>>b[1]>>c[1];
for (int i = 2; i < n; i++)
{
a[i] = (1LL * a[i - 1] * i) % n;
b[i] = (1LL * b[i - 1] * i) % n;
c[i] = (1LL * c[i - 1] * i) % n;
}
for (int i = n - 1; i >= 1; i--)
{
if (a[i] > b[i])
swap(a[i], b[i]);
Union(a[i], b[i], c[i]);
}
for (int i = 1; i < n; i++)
g<<v[i]<<'\n';
return 0;
}