#include "towers.h"
#include <bits/stdc++.h>
#define uwu return
using namespace std;
#define fs first
#define sc second
#define all(x) x.begin(), x.end()
const int SIZE = 1e5 + 5, LOG_C = 19;
int sps_tbl[LOG_C][SIZE];
int pos_max(int a, int b){
if(sps_tbl[0][a] > sps_tbl[0][b])
return a;
return b;
}
void output(long long a, bool b){
if(b)
cerr << '\n';
else
cerr << a << ' ';
return;
}
int query(int l, int r){
int lv = __lg(r - l + 1);
uwu pos_max(sps_tbl[lv][l], sps_tbl[lv][r - (1 << lv) + 1]);
}
void init(int N, vector<int> H) {
for (int i = 0; i < N; i++){
sps_tbl[0][i] = H[i];
}
for (int lv = 1; lv < LOG_C; lv++){
for (int i = 0; i < N - (1 << lv) + 1; i++){
sps_tbl[lv][i] = pos_max(sps_tbl[lv - 1][i], sps_tbl[lv - 1][i + (1 << (lv - 1))]);
}
}
uwu;
}
int max_towers(int L, int R, int D) {
int rt = query(L, R);
if(abs(sps_tbl[0][L] - sps_tbl[0][rt]) >= D && abs(sps_tbl[0][R] - sps_tbl[0][rt]) >= D)
uwu 2;
uwu 1;
}
# | 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... |