#include <stdio.h>
int is_alternating_pattern(int *mem, int k) {
// check if enough elements for an alternating pattern
if (k < 2)
return 0;
// init with first 2 elements
int pattern1 = *mem++;
int pattern2 = *mem++;
// check if already pattern not alternating
if (pattern1 == pattern2)
return 0;
// check if remaining elements follow the pattern
for (int i = 2; i < k; i++) {
int current = *mem++;
if ((i % 2) == 0 && current != pattern1) {
// even index -> should have followed pattern1
return 0;
}
if ((i % 2) != 0 && current != pattern2) {
// odd index -> should have followed pattern2
return 0;
}
}
return 1;
}
int main() {
int n, k, arr[100];
scanf("%d %d", &n, &k);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
int res = is_alternating_pattern(arr, k);
printf("%d", res);
return 0;
}Generic solution that works for any numbers, not only 0 and 1.