Pagini recente » Clasament oni_10_0 | tema | Istoria paginii runda/test_bossimici/clasament | Istoria paginii runda/concurstreiore/clasament | Cod sursa (job #234608)
Cod sursa(job #234608)
#include <cstdio>
#define MAX_N 1000005
int N;
int A[MAX_N], B[MAX_N], C[MAX_N], Next[MAX_N], Sol[MAX_N];
void citire()
{
scanf("%d %d %d %d",&N, A+1, B+1, C+1);
for(int i = 2; i < N; ++i)
{
A[i] = (1LL * A[i - 1] * i) % N;
B[i] = (1LL * B[i - 1] * i) % N;
C[i] = (1LL * C[i - 1] * i) % N;
}
for(int i = 1; i < N; ++i)
{
Next[i] = i + 1;
if(A[i] > B[i])
{
A[i] ^= B[i];
B[i] ^= A[i];
A[i] ^= B[i];
}
}
}
void solve()
{
for(int i = N-1; i; --i)
{
int j = A[i];
while(j <= B[i])
{
if(Sol[j] == 0)
Sol[j] = C[i];
int aux = Next[j];
Next[j] = B[i] + 1;
j = aux;
}
}
for(int i = 1; i < N; ++i)
printf("%d\n", Sol[i]);
}
int main()
{
freopen("curcubeu.in","rt",stdin);
freopen("curcubeu.out","wt",stdout);
citire();
solve();
}