제출 #1312246

#제출 시각아이디문제언어결과실행 시간메모리
1312246azamurai9월 (APIO24_september)C++20
45 / 100
165 ms7488 KiB
#include "september.h" #include <bits/stdc++.h> #include <vector> using namespace std; int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S) { vector <int> p(N + 1, 0); vector <int> pos(N, 0); for (int i = 0; i < N - 1; i++) { pos[S[0][i]] = i; } vector <pair<int,int>> seg; for (int i = 1; i < N; i++) { if (F[i] == 0) continue; if (pos[F[i]] < pos[i]) { seg.push_back(make_pair(pos[F[i]], pos[i])); } } sort(seg.begin(), seg.end()); for (int i = 0; i < N; i++) { p[i] = i; } int idx = -1; for (auto to : seg) { int l = to.first, r = to.second; if (idx >= l) { for (int i = idx + 1; i <= r; i++) p[i] = p[i - 1]; idx = r; } else { for (int i = l + 1; i <= r; i++) p[i] = p[i - 1]; idx = r; } } set <int> st; for (int i = 0; i < N - 1; i++) { st.insert(p[i]); } return (int)st.size(); }
#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...