Pagini recente » Cod sursa (job #1922937) | Cod sursa (job #2509979) | Cod sursa (job #1831892) | Cod sursa (job #197178) | Cod sursa (job #1806831)
#include <stdio.h>
#define N_MAX 1000000
using namespace std;
FILE *fin = fopen("curcubeu.in", "r");
FILE *fout = fopen("curcubeu.out", "w");
int N, A, B, C;
int mic, mare;
int colour[N_MAX + 1];
int boss[N_MAX + 1];
int find(int x) {
if(x <= 0)
return x;
else {
boss[x] = find(boss[x]);
return find(boss[x]);
}
}
struct anakin {
int inc, sf, color;
};
anakin pas[N_MAX + 1];
void init() {
int i;
for (i = 1; i <= N - 1; i++)
boss[i] = i - 1;
}
int main(){
int i, j;
int t;
int ver;
fscanf(fin, "%d %d %d %d", &N, &A, &B, &C);
for (t = 1; t <= N - 1; t++) {
if (A > B) {
mic = B;
mare = A;
}
else {
mic = A;
mare = B;
}
pas[t].inc = mic;
pas[t].sf = mare;
pas[t].color = C;
A = (A * (t + 1)) % N;
B = (B * (t + 1)) % N;
C = (C * (t + 1)) % N;
}
init();
for (i = N - 1; i >= 1; i--) {
mic = pas[i].inc;
mare = pas[i].sf;
C = pas[i].color;
ver = 1;
while (mic <= mare && ver == 1) {
if (find(mic) >= 0) {
boss[mic] = -C;
boss[mare + 1] = 0;
ver = 0;
}
else {
mic++;
}
}
}
for (i = 1; i <= N - 1; i++)
fprintf(fout, "%d\n", -find(i));
fclose(fin);
fclose(fout);
return 0;
}