#include <stdio.h>
int is_pattern_1(int * mem,int k){
// int flag = 1;
int* one_ptr = mem;
int* zero_ptr = mem+1;
for(int i=0;i<k/2;i++){
if(!((*one_ptr == 1) && (*zero_ptr == 0))){
return 0;
}
one_ptr += 2;
zero_ptr += 2;
}
if(k%2 != 0){
if(*one_ptr == 1){
return 1;
}
else{
return 0;
}
}
else{
return 1;
}
}
int is_pattern_2(int * mem,int k){
// int flag = 1;
int* one_ptr = mem+1;
int* zero_ptr = mem;
for(int i=0;i<k/2;i++){
if(!((*one_ptr == 1) && (*zero_ptr == 0))){
return 0;
}
one_ptr += 2;
zero_ptr += 2;
}
if(k%2 != 0){
if(*zero_ptr == 0){
return 1;
}
else{
return 0;
}
}
else{
return 1;
}
}
int is_alternating_pattern(int *mem, int k, int n) {
for(int i =0;i<n-k+1;i++){
if((is_pattern_1(mem,k)) || (is_pattern_2(mem,k) )){
return 1;
}
mem++;
}
return 0;
}
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