#include "towers.h"
#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define mp make_pair
#define ff first
#define ss second
using namespace std;
vector<int> h;
int n, dp[2000];
bool connected[2000][2000];
void init(int N, vector<int> H) {
h = H; n = N;
}
int max_towers(int l, int r, int d) {
for (int i=l;i<r+1;i++) {
for (int j=l;j<r+1;j++) {
connected[i][j] = false;
}
}
for (int i=l;i<r;i++) {
int maxval = h[i + 1];
for (int j=i+2;j<r+1;j++) {
if (h[j] <= maxval - d && h[i] <= maxval - d) {connected[i][j] = true; connected[j][i] = true;}
maxval = max(maxval, h[j]);
}
}
//for (int i=l;i<r+1;i++) {
// for (int j=l;j<r+1;j++) {
// cout << connected[i][j] << ' ';
// }
// cout << '\n';
//} cout << endl;
dp[l] = 1;
for (int i=l+1;i<r+1;i++) {
dp[i] = 1;
for (int j=i-2;j>l-1;j--) {
if (connected[i][j]) dp[i] = max(dp[i], dp[j] + 1);
}
}
int ans = 0;
for (int i=l;i<r+1;i++) {
ans = max(ans, dp[i]);
}
//for (int i=l;i<r+1;i++) {
// cout << dp[i] << ' ';
//} cout << endl;
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... |