제출 #1199509

#제출 시각아이디문제언어결과실행 시간메모리
1199509ericl233029월 (APIO24_september)C++20
100 / 100
69 ms6264 KiB
#include "september.h" #include <bits/stdc++.h> #include <vector> #include <algorithm> using namespace std; // void topSort(vector<bool> &visited, vector<int> &res, vector<int> &parents, int cur) { // if (visited[cur] || !cur) return; // visited[cur] = true; // topSort(parents[cur]); // res.push_back(cur); // } int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S) { // vector<bool> visited(N, false); // vector<int> res; vector<pair<int, int>> firstLastOccurances(N, {N, 0}); for (auto &s : S) { for (int i = 0; i < N - 1; ++i) { firstLastOccurances[s[i]].first = min(firstLastOccurances[s[i]].first, i); firstLastOccurances[s[i]].second = max(firstLastOccurances[s[i]].second, i); } } vector<int> arr(N - 1, 0); for (int i = 1; i < N; ++i) { ++arr[firstLastOccurances[i].first]; --arr[firstLastOccurances[i].second]; if (firstLastOccurances[F[i]].first <= firstLastOccurances[i].second) ++arr[firstLastOccurances[F[i]].first], --arr[firstLastOccurances[i].second]; } for (int i = 1; i < N - 1; ++i) arr[i] += arr[i - 1]; int res = 0; for (int i : arr) res += (i == 0); 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...