#include "towers.h"
#include <bits/stdc++.h>
using namespace std;
class segTree {
int n;
vector<int> seg;
void upd(int node, int start, int end, int idx, int v) {
if (start == end) {
seg[node] = v;
}
else {
int mid = (start + end) / 2;
if (idx <= mid) upd(node*2, start, mid, idx, v);
else upd(node*2+1, mid+1, end, idx, v);
seg[node] = seg[node*2] + seg[node*2+1];
}
}
int query(int node, int start, int end, int l, int r) {
if (start > r || end < l) return 0;
else if (start >= l && end <= r) return seg[node];
else {
int mid = (start + end) / 2;
return query(node*2, start, mid, l, r) + query(node*2+1, mid+1, end, l, r);
}
}
public:
void initt(int nn) {
n = nn;
seg.assign(4*(n+1), 0);
}
void upd(int idx, int v) {
upd(1, 0, n-1, idx, v);
}
int query(int l, int r) {
if (l > r) return 0;
return query(1, 0, n-1, l, r);
}
};
void dbg(vector<int> xx) {
/*
cout << "DBG: ";
for (auto x: xx) cout << x << " ";
cout << "\n";*/
}
segTree seg1, seg2;
int n;
vector<int> h, ptr;
void init(int N, std::vector<int> H) {
n = N;
h = H;
seg1.initt(n);
seg2.initt(n);
for (int i = 1; i < n-1; i++) {
if (h[i] > h[i-1] && h[i] > h[i+1]) {
seg1.upd(i, 1);
dbg({i});
}
}
}
int max_towers(int L, int R, int D) {
assert(D == 1);
if (R - L + 1 <= 2) return 1;
int tot = seg1.query(L+1, R-1);
dbg({L+1, R-1, tot});
return tot+1;
}