#include "towers.h"
#include <bits/stdc++.h>
using namespace std;
#define arr array
#define vec vector
const int N = 1e5 + 5;
int n;
arr<int, N> h;
arr<int, N> sm;
int rng(int l, int r) {
if (l > r) return 0;
return sm[r] - sm[l - 1];
}
void sm_cmp() {
for (int i = 1; i <= n; i++)
sm[i] = sm[i - 1] + (h[i] < h[i - 1] && h[i] < h[i + 1]);
}
void init(int _n, vec<int> _h) {
n = _n;
for (int i = 1; i <= n; i++) h[i] = _h[i - 1];
sm_cmp();
}
int max_towers(int l, int r, int d) {
l++, r++; assert(d == 1);
if (l == r) return 1;
int ans = rng(l + 1, r - 1);
for (int i : {l, r}) {
int cnt = (i == l || h[i] < h[i - 1]) + (i == r || h[i] < h[i + 1]);
ans += (cnt == 2);
}
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |