Pagini recente » Cod sursa (job #2149476) | Cod sursa (job #2090856) | Cod sursa (job #963147) | Cod sursa (job #676873) | Cod sursa (job #1171683)
#include <fstream>
#include <iostream>
#include <string.h>
using namespace std;
const int Nmax = 1000033;
int E[Nmax][3];
int col[Nmax];
int next[Nmax];
int last(int x)
{
if (x != next[x])
next[x] = last(next[x]);
return next[x];
}
int main()
{
ifstream f ("curcubeu.in");
ofstream g ("curcubeu.out");
int N, A, B, C;
f >> N >> A >> B >> C;
for (int i = 1; i < N; i++)
{
if (A < B)
{ E[i][0] = A; E[i][1] = B; }
else
{E[i][0] = B; E[i][1] = A; }
E[i][2] = C;
A = (1ll*A*(i+1)) % N;
B = (1ll*B*(i+1)) % N;
C = (1ll*C*(i+1)) % N;
}
memset(col, 0, sizeof(col));
memset(next, -1, sizeof(next));
for (int i = N-1; i>=0; i--)
{
int x = E[i][0], y = E[i][1], z = E[i][2];
while(x <= y)
{
if (!col[x])
{
col[x] = z;
next[x] = x;
if (col[x-1] == z)
next[x-1] = x;
} else
{
if (col[x-1] == col[x])
next[x-1] = x;
x = last(x);
}
x++;
}
}
for (int i = 1; i < N; i++)
g << col[i] << '\n';
return 0;
}