제출 #1204228

#제출 시각아이디문제언어결과실행 시간메모리
1204228OmarAlimammadzade9월 (APIO24_september)C++20
100 / 100
110 ms16064 KiB
#include "september.h" using namespace std; const int N = 1e5; vector<int> g[N]; int n, m, pos[N]; void dfs(int u) { for (int v : g[u]) { dfs(v); pos[u] = max(pos[u], pos[v]); } } void clear() { for (int i = 0; i < n; i++) { g[i].clear(); pos[i] = 0; } } int solve(int N, int M, vector<int> F, vector<vector<int>> S) { n = N, m = M; clear(); int cnt[n], dif = 0; fill(cnt, cnt + n, 0); for (int i = 1; i < n; i++) { g[F[i]].push_back(i); } for (int i = 0; i < n - 1; i++) { pos[S[0][i]] = i; } dfs(0); int res = 0, cur = 0; for (int i = 0; i < n - 1; i++) { for (int j = 0; j < m; j++) { dif += (!cnt[S[j][i]]); dif -= (++cnt[S[j][i]] == m); } cur = max(cur, pos[S[0][i]]); res += (cur <= i and !dif); } 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...