Submission #1177889

#TimeUsernameProblemLanguageResultExecution timeMemory
1177889adaawfSeptember (APIO24_september)C++20
100 / 100
103 ms16320 KiB
#include <bits/stdc++.h> using namespace std; vector<int> g[100005]; int b[100005], f[100005]; void dfs(int x) { f[x] = b[x]; for (int w : g[x]) { dfs(w); f[x] = max(f[x], f[w]); } } int solve(int n, int m, vector<int> p, vector<vector<int>> a) { for (int i = 0; i < n; i++) { g[i].clear(); b[i] = 0; } for (int i = 1; i < n; i++) { g[p[i]].push_back(i); } for (auto w : a) { for (int i = 0; i < n - 1; i++) { b[w[i]] = max(b[w[i]], i); } } dfs(0); int d = 0, ma = -1, res = 0; while (d < n - 1) { if (d == ma + 1) res++; for (int i = 0; i < m; i++) { ma = max(ma, f[a[i][d]]); } d++; } return res; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...