Local Extrema (Codeforces 888A)
Tags: Implement, brute force

You are given an array a. Some element of this array ai is a local minimum iff it is strictly less than both of its neighbours (that is, ai < ai - 1 and ai < ai + 1). Also the element can be called local maximum iff it is strictly greater than its neighbours (that is, ai > ai - 1 and ai > ai + 1). Since a1 and an have only one neighbour each, they are neither local minima nor local maxima.An element is called a local extremum iff it is either local maximum or local minimum. Your task is to calculate the number of local extrema in the given array.

Input: The first line contains one integer n (1 ≤ n ≤ 1000) — the number of elements in array a.The second line contains n integers a1, a2, ..., an (1 ≤ ai ≤ 1000) — the elements of array a.

Output: Print the number of local extrema in the given array.


Sample Inputs:
3
1 2 3

4
1 5 2 5

Sample Outputs:
0

2

Solution (Python):
a = (*map(int, [*open(0)][1].split()),)
print(sum(((y - x) * (y - z) > 0 for (x, y, z) in zip(a, a[1:], a[2:]))))

Solution (Python):
import sys
a = int(input())
b = [int(i) for i in sys.stdin.readline().split()]
c = 0
for i in range(1, a - 1):
    if b[i - 1] > b[i] < b[i + 1] or b[i - 1] < b[i] > b[i + 1]:
        c += 1
print(c)

Solution (Python):
a = (*map(int, [*open(0)][1].split()),)
print(sum(((y - x) * (y - z) > 0 for (x, y, z) in zip(a, a[1:], a[2:]))))