Submission #1245490

#TimeUsernameProblemLanguageResultExecution timeMemory
1245490DeathIsAweRadio Towers (IOI22_towers)C++20
11 / 100
12 ms4860 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...