Pagini recente » Cod sursa (job #2407910) | Cod sursa (job #693832) | Cod sursa (job #1369583) | Cod sursa (job #1191545) | Cod sursa (job #658581)
Cod sursa(job #658581)
#include<iostream>
#include<fstream>
#define NMAX 1000005
using namespace std;
int N, A[NMAX], B[NMAX], C[NMAX];
int
color[NMAX], Next[NMAX];
void Read()
{
ifstream in("curcubeu.in");
int i,Aux;
in >> N >> A[1] >> B[1] >> C[1];
if(A[1] > B[1])
{
Aux = A[1];
A[1] = B[1];
B[1] = Aux;
}
for(i = 2; i <= N-1; ++i)
{
A[i] = (1LL*i*A[i-1])%N;
B[i] = (1ll*i*B[i-1])%N;
if(A[i] > B[i])
{
Aux = A[i];
A[i] = B[i];
B[i] = Aux;
}
C[i] = (1LL*i*C[i-1])%N;
}
in.close();
}
void Print()
{
ofstream out("curcubeu.in");
for(int i = 1; i <= N-1; i++)
out << color[i] << '\n';
out.close();
}
void Rainbow(int A, int B, int CurrentC)
{
for(int i = A; i <= B; )
{
if(color[i] == 0)
{
color[i] = CurrentC;
Next[CurrentC] = i;
++i;
}
else
i = Next[CurrentC] +1;
}
}
int main()
{
Read();
for(int i = N-1; i > 0; --i)
{
Rainbow(A[i], B[i], C[i]);
}
Print();
}