#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |