Pagini recente » Cod sursa (job #1106678) | Cod sursa (job #2163401) | Cod sursa (job #1670641) | Cod sursa (job #851372) | Cod sursa (job #2650369)
#include <bits/stdc++.h>
using namespace std;
FILE *in = fopen("curcubeu.in", "r");
FILE *out = fopen("curcubeu.out", "w");
const int NMAX = 1000000 + 7;
int v[NMAX];
int lft[NMAX];
int rght[NMAX];
int color[NMAX];
int skip_list[NMAX];
void dfs_skip(int poz)
{
if(poz == 0) return;
if(v[poz] != 0)
{
dfs_skip(skip_list[poz]);
skip_list[poz] = ((skip_list[skip_list[poz]] != 0) ? (skip_list[skip_list[poz]]) : (skip_list[poz]));
}
}
int main()
{
int n, a, b, c; fscanf(in, "%d%d%d%d", &n, &a, &b, &c);
lft[1] = min(a, b);
rght[1] = max(a, b);
color[1] = c;
for(int i = 2; i <= n-1; i++)
{
a = (1LL * a * i) % n;
b = (1LL * b * i) % n;
c = (1LL * c * i) % n;
lft[i] = min(a, b);
rght[i] = max(a, b);
color[i] = c;
}
for(int i = n-1; i >= 1; i--)
{
for(int j = lft[i]; j <= rght[i]; j=j)
{
if(v[j] != 0)
{
dfs_skip(j);
j = skip_list[j];
}
else
{
v[j] = color[i];
skip_list[j] = rght[i+1];
j++;
}
}
}
for(int i = 1; i <= n-1; i++)
fprintf(out, "%d\n", v[i]);
}