제출 #705596

#제출 시각아이디문제언어결과실행 시간메모리
705596danikoynov송신탑 (IOI22_towers)C++17
11 / 100
4051 ms1572 KiB
#include "towers.h" #include <bits/stdc++.h> using namespace std; const int maxn = 1e5 + 10; int n, h[maxn]; void init(int N, std::vector<int> H) { n = N; for (int i = 0; i < n; i ++) h[i] = H[i]; } int par[maxn], rnk[maxn]; int find_leader(int v) { return (v == par[v]) ? v : par[v] = find_leader(par[v]); } void unite(int v, int u) { v = find_leader(v); u = find_leader(u); if (v == u) return; if (rnk[v] < rnk[u]) swap(v, u); rnk[v] += rnk[u]; par[u] = v; } int dp[maxn]; int max_towers(int L, int R, int D) { for (int i = L; i <= R; i ++) { dp[i] = 1; } for (int i = L; i <= R; i ++) { int max_tower = 0; for (int j = i - 1; j >= L; j --) { if (max_tower - D >= h[i] && max_tower - D >= h[j]) dp[i] = max(dp[i], dp[j] + 1); max_tower = max(max_tower, h[j]); } } int ans = 0; for (int i = L; i <= R; i ++) ans = max(ans, dp[i]); 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...