Pagini recente » Cod sursa (job #997464) | Cod sursa (job #1566700) | Cod sursa (job #1256124) | Cod sursa (job #1123772) | Cod sursa (job #85936)
Cod sursa(job #85936)
#include <cstdio>
#define max_t 2000001
#define max_n 1000001
void read();
void solve();
void write();
long long unsigned N, A1, B1, C1, A, B, C;
int St[max_n], Colour[max_n];
void up(int st, int dr)
{
if(St[st] <= dr)
{
St[st] = dr;
Colour[st] = C;
}
else
{
St[dr+1] = St[st];
Colour[dr+1] = Colour[st];
St[st] = dr;
Colour[st] = C;
}
}
int main()
{
read();
solve();
write();
return 0;
}
void read()
{
freopen("curcubeu.in", "rt", stdin);
scanf("%llu %llu %llu %llu", &N, &A1, &B1, &C1);
fclose(stdin);
}
void solve()
{
int i, st, dr;
for(i=1; i<N; ++i)
{
A = (A1 * i) % N;
B = (B1 * i) % N;
C = (C1 * i) % N;
st = A < B ? A : B;
dr = A > B ? A : B;
if(!st && !dr)
return;
else if(!st)
st = 1;
up(st, dr);
A1 = A;
B1 = B;
C1 = C;
}
}
void write()
{
freopen("curcubeu.out", "wt", stdout);
int i = 1, dr, c;
while(i < N)
{
while(!St[i] && i < N)
{
printf("0\n");
++ i;
}
dr = St[i];
c = Colour[i];
while(i <= dr)
{
printf("%d\n", c);
++ i;
}
}
fclose(stdout);
}