Pagini recente » Cod sursa (job #2112230) | Cod sursa (job #2051586) | Cod sursa (job #1475899) | Cod sursa (job #253019) | Cod sursa (job #658582)
Cod sursa(job #658582)
#include <iostream>
#include <fstream>
#define NMax 1000005
using namespace std;
int N, A[NMax], B[NMax], C[NMax];
int Rainbow[NMax], Next[NMax];
void Read ()
{
ifstream fin ("curcubeu.in");
fin >> N >> A[1] >> B[1] >> C[1];
if (A[1]>B[1])
{
int Aux=A[1];
A[1]=B[1];
B[1]=Aux;
}
for (int i=2; i<N; ++i)
{
A[i]=(1LL*i*A[i-1])%N;
B[i]=(1LL*i*B[i-1])%N;
if (A[i]>B[i])
{
int Aux=A[i];
A[i]=B[i];
B[i]=Aux;
}
C[i]=(1LL*i*C[i-1])%N;
}
fin.close ();
}
void Print ()
{
ofstream fout ("curcubeu.out");
for (int i=1; i<N; ++i)
{
fout << Rainbow[i] << "\n";
}
fout.close ();
}
void Colour (int X, int Y, int CurrentC)
{
for (int i=X; i<=Y; )
{
if (Rainbow[i]==0)
{
Rainbow[i]=CurrentC;
Next[CurrentC]=i;
++i;
}
else
{
i=Next[Rainbow[i]]+1;
}
}
}
int main()
{
Read ();
for (int i=N-1; i>0; --i)
{
Colour (A[i], B[i], C[i]);
}
Print ();
return 0;
}