#include "towers.h"
#include <bits/stdc++.h>
#define ll long long
#define fi first
#define se second
#define pb push_back
using namespace std;
typedef pair<ll,ll> pii;
typedef pair<ll,pii> ipii;
const int MAXN = 3e5+100;
const int LOG = 19;
const ll INF = 2e18+10;
void chmx(auto &a, auto b){ a = max(a, b); }
void chmn(auto &a, auto b){ a = min(a, b); }
int n, h[MAXN], st[MAXN][LOG+5];
void init(int N, std::vector<int> H) {
n = N;
for(int i=1; i<=n; i++){
h[i] = H[i-1];
st[i][0] = h[i];
}
for(int j=1; j<LOG; j++){
for(int i=1; i+(1<<j)-1<=n; i++){
st[i][j] = max(st[i][j-1], st[i+(1<<(j-1))][j-1]);
}
}
}
int dp[MAXN];
int max_towers(int L, int R, int D) {
int l = L+1, r = R+1, d = D;
int ANS = 1;
dp[l] = 1;
for(int i=l+1; i<=r; i++){
int mx = h[i-1];
dp[i] = 1;
for(int j=i-2; j>=l; j--){
if(max(h[i], h[j]) <= mx-d){ // bisa
chmx(dp[i], dp[j]+1);
}
chmx(mx, h[j]);
}
chmx(ANS, dp[i]);
}
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... |