Pagini recente » Cod sursa (job #1526692) | Cod sursa (job #2214513) | Cod sursa (job #1475369) | Cod sursa (job #187094) | Cod sursa (job #624136)
Cod sursa(job #624136)
#include <iostream>
#include <cstdio>
#define NMax 1000005
#define LL long long
using namespace std;
int N, A[NMax], B[NMax], C[NMax];
int Rainbow[NMax], Right[NMax];
void Read ()
{
freopen ("curcubeu.in", "r", stdin);
scanf ("%d %d %d %d", &N, &A[1], &B[1], &C[1]);
Rainbow[1]=-1;
for (int i=2; i<N; ++i)
{
Rainbow[i]=-1;
A[i]=(int)(((LL)i*(LL)A[i-1])%(LL)N);
B[i]=(int)(((LL)i*(LL)B[i-1])%(LL)N);
if (A[i]>B[i])
{
int Aux=A[i];
A[i]=B[i];
B[i]=Aux;
}
C[i]=(int)(((LL)i*(LL)C[i-1])%(LL)N);
}
}
void Print ()
{
freopen ("curcubeu.out", "w", stdout);
for (int i=1; i<N; ++i)
{
printf ("%d\n", Rainbow[i]);
}
}
void Colour (int Index, int X, int Y, int CurrentC)
{
for (int i=X; i<=Y; )
{
if (Rainbow[i]==-1)
{
Rainbow[i]=CurrentC;
Right[Index]=i;
++i;
}
else
{
i=Right[Rainbow[i]]+1;
}
}
}
int main()
{
Read ();
for (int i=N-1; i>=0; --i)
{
Colour (i, A[i], B[i], C[i]);
}
Print ();
return 0;
}