spj_c.c
#include <stdio.h>
#include <stdlib.h>
int change(unsigned long long *p, int i, int mod) {
if (*p & 1 << i) return 0;
*p ^= 1 << i;
*p ^= 1 << (i + 1) % mod;
*p ^= 1 << (i - 1 + mod) % mod;
return 1;
}
int main() {
FILE *input = fopen("input", "r");
FILE *user_out = fopen("user_out", "r");
unsigned long long state = 0;
int i, n;
fscanf(input, "%d", &n);
for (i = 0; i < n; ++i) {
int t;
fscanf(input, "%d", &t);
state ^= t * 1 << i;
}
while (fscanf(user_out, "%d", &i) != EOF) {
if (!change(&state, i, n)) {
printf("0\n");
fprintf(stderr, "Invalid operation.\n");
return 0;
}
}
if (state == (1 << n) - 1) {
printf("100\n");
fprintf(stderr, "Congratulations!\n");
}
else {
printf("0\n");
fprintf(stderr, "Wrong answer.\n");
}
return 0;
}