#include <stdio.h>
// int is_alternating_pattern(int *mem, int k,int n) {
// // Write your pointer logic here
// // int yes = 1;
// // int *p = *mem;
// for (int i=0;i<n-k+1;i++){
// if (*(mem + i) == *(mem + i + 1)){
// return 0;
// }
// }
// return 1;
// }
int is_alternating_pattern(const int *mem, int k, int n) {
// Basic validation
if (k <= 0 || k > n) return 0; // invalid segment
if (k == 1) return 1; // a single element is trivially alternating
const int *p = mem;
int A = *p; // first value
int B = *(p + 1); // second value
if (A == B) return 0; // must be two distinct values to alternate
// Walk through the first k elements verifying A,B,A,B,...
for (int i = 0; i < k; ++i, ++p) {
if ((i & 1) == 0) { // even index → expect A
if (*p != A) return 0;
} else { // odd index → expect B
if (*p != B) 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,n);
printf("%d", res);
return 0;
}
Input
6 6 1 0 1 0 1 0
Expected Output
1