Submission #824241

#TimeUsernameProblemLanguageResultExecution timeMemory
824241LiudasRadio Towers (IOI22_towers)C++17
0 / 100
4046 ms33348 KiB
#include "towers.h" #include <cassert> #include <cstdio> #include <bits/stdc++.h> using namespace std; vector<int> H; int N; void init(int n, vector<int> h){ H = h; N = n; } void dfs(int head, vector<bool> &vis, vector<bitset<2000>> &tree, int c, int &S, bitset<2000> can){ vis[head] = true; can &= tree[head]; for(int i = 0; i < N; i ++){ if(!vis[i] && can[i]){ dfs(i, vis, tree, c + 1, S, can); } } S = max(S, c); } int max_towers(int L, int R, int D){ vector<bitset<2000>> tree(N); for(int i = L; i <= R; i ++){ int maxi = H[i]; tree[i][i] = 1; for(int j = i; j <= R; j ++){ if(H[i] + D <= maxi && H[j] + D <= maxi){ tree[i][j] = 1; tree[j][i] = 1; } maxi = max(maxi, H[j]); } } int S = 0; for(int i = L; i <= R; i ++){ vector<bool> vis(N); bitset<2000> can = tree[i]; dfs(i, vis, tree, 1, S, can); } return S; }
#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...