Pagini recente » Cod sursa (job #2049334) | Cod sursa (job #437264) | Cod sursa (job #79218) | Cod sursa (job #1840635) | Cod sursa (job #2648501)
#include <cstdio>
#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
using namespace std;
typedef long long ll;
int main()
{
freopen ("curcubeu.in", "r", stdin);
freopen ("curcubeu.out", "w", stdout);
int n, x, y, z;
cin >> n >> x >> y >> z;
n--;
vector<int> col(n, 0), a(n), b(n), c(n), nxt(n);
iota(nxt.begin(), nxt.end(), 1);
set<int> s;
a[0] = min(x, y);
b[0] = max(x, y);
c[0] = z;
for (int i = 1; i < n; i++)
{
x = (ll) x * (i + 1) % (n + 1);
y = (ll) y * (i + 1) % (n + 1);
z = (ll) z * (i + 1) % (n + 1);
a[i] = min(x, y);
b[i] = max(x, y);
c[i] = z;
}
for (int i = n - 1; i >= 0; i--)
{
int l = a[i] - 1, r = b[i] - 1, x = c[i];
int j = l;
while (j <= r)
{
int u = nxt[j];
nxt[j] = max(nxt[j], r + 1);
if (col[j] == 0)
{
col[j] = x;
}
j = u;
}
}
for (int i = 0; i < n; i++)
{
printf("%d\n", col[i]);
}
}