제출 #1211297

#제출 시각아이디문제언어결과실행 시간메모리
1211297omsincoconut참나무 (IOI23_beechtree)C++17
18 / 100
2089 ms17888 KiB
#include "beechtree.h" #include <bits/stdc++.h> using namespace std; vector<int> normalize(vector<int> a) { vector<int> as = a; sort(as.begin(), as.end()); for (int &i : a) i = lower_bound(as.begin(), as.end(), i) - as.begin(); return a; } vector<int> beechtree(int N, int M, vector<int> P, vector<int> C) { vector<int> ret(N); C = normalize(C); vector<vector<int>> child(N); for (int i = 1; i < N; i++) child[P[i]].push_back(i); for (int i = 0; i < N; i++) { bool can = true; vector<int> cnt(N); priority_queue<tuple<int, int, int>> dt; vector<int> seq; dt.emplace(child[i].size(), -1, i); while (!dt.empty()) { int szu, ppu, u; tie(szu, ppu, u) = dt.top(); dt.pop(); seq.push_back(u); if (u != i) { can &= (seq[cnt[C[u]]] == P[u]); cnt[C[u]]++; } for (int v : child[u]) { dt.emplace(child[v].size(), -(int)seq.size(), v); } } ret[i] = can; } return ret; }
#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...