#include <stdio.h>
int is_alternating_pattern(int *mem, int k) {
// Write your pointer logic here
if(k <= 2) return 1;
int *temp1 = mem; // first element
int *temp2 = mem + 1; // second element
int loop_cnt = 0;
if(k%2 == 0){ // if number of elements are even
loop_cnt = (k/2) - 1;
// same loop to check at both pointers
for(int i = 0; i < loop_cnt; i++){
if( (*temp1 != *(temp1+2)) ||
(*temp2 != *(temp2+2)) ){
return 0;
}
temp1+=2;
temp2+=2;
}
}else{ // if number of elements are odd
loop_cnt = k/2;
// at pointer one
for(int i = 0; i < loop_cnt; i++){
if( (*temp1 != *(temp1+2)) ){
return 0;
}
temp1+=2;
}
// at second pointer
for(int i = 0; i < loop_cnt-1; i++){
if( (*temp2 != *(temp2+2)) ){
return 0;
}
temp2+=2;
}
}
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;
}
Input
6 6 1 0 1 0 1 0
Expected Output
1