Pagini recente » Cod sursa (job #596749) | Cod sursa (job #1718892) | runda_de_codat_formule | Cod sursa (job #1461830) | Cod sursa (job #658580)
Cod sursa(job #658580)
#include<iostream>
#include<fstream>
#define NMAX 1000005
using namespace std;
ifstream in("curcubeu.in");
ofstream out("curcubeu.out");
int N, A[NMAX], B[NMAX], C[NMAX], color[NMAX], Next[NMAX];
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()
{
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;
C[i] = (1LL*i*C[i-1])%N;
if(A[i] > B[i])
{
Aux = A[i];
A[i] = B[i];
B[i] = Aux;
}
in.close();
}
for(i = N-1; i > 0; --i)
Rainbow(A[i], B[i], C[i]);
for(i = 1; i <= N-1; i++)
out << color[i] << '\n';
}