#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
bool isArraySortedAndValidGap(int* arr, size_t size) {
if (size < 2) return true;
// Check ascending order
bool isAscending = true;
for (size_t i = 1; i < size; ++i) {
if (arr[i] < arr[i-1] || abs(arr[i] - arr[i-1]) < 1 || abs(arr[i] - arr[i-1]) > 3) {
isAscending = false;
break;
}
}
// Check descending order
bool isDescending = true;
if (!isAscending) {
for (size_t i = 1; i < size; ++i) {
if (arr[i] > arr[i-1] || abs(arr[i] - arr[i-1]) < 1 || abs(arr[i] - arr[i-1]) > 3) {
isDescending = false;
break;
}
}
}
return isAscending || isDescending;
}
int main() {
int arr1[] = {1, 2, 3, 5, 8, 11, 14, 15};
size_t size1 = sizeof(arr1) / sizeof(arr1[0]);
if (isArraySortedAndValidGap(arr1, size1)) {
printf("array is sorted and valid gaps\n");
} else {
printf("array is not sorted or gaps are invalid\n");
}
int arr2[] = {15, 14, 11, 8, 5, 3, 2, 1};
size_t size2 = sizeof(arr2) / sizeof(arr2[0]);
if (isArraySortedAndValidGap(arr2, size2)) {
printf("array is sorted and valid gaps\n");
} else {
printf("array is not sorted or gaps are invalid\n");
}
return 0;
}
/*
run:
array is sorted and valid gaps
array is sorted and valid gaps
*/