#include "september.h"
#include <bits/stdc++.h>
using namespace std;
// #pragma GCC optimize("O3,unroll-loops")
// #pragma GCC target("avx2")
int solve(int n, int m, std::vector<int> f, std::vector<std::vector<int>> s) {
#define int int64_t
vector<int> id(n), sosal(n, -1);
for (int i = 0; i < n - 1; i++)
id[s[0][i]] = i;
for (int i = 1; i < n; i++) {
sosal[f[i]] = max(sosal[f[i]], id[i] + 1);
}
const int INF = 1e12;
vector<int> mxx(n);
for (int i = 0; i + 1 < n; i++)
mxx[i + 1] = sosal[s[0][i]];
for (int i = 1; i < n; i++)
mxx[i] = max(mxx[i], mxx[i - 1]);
mt19937 rnd(1488);
vector<int> hsh(n);
for (int i = 1; i < n; i++)
hsh[i] = rnd();
vector<int> ph1(n), penis(n);
for (int i = 0; i + 1 < n; i++) {
int cur_val = 0;
for (int j = 0; j < m; j++)
cur_val += hsh[s[j][i]];
ph1[i + 1] = cur_val + ph1[i];
cur_val = 0;
for (int j = 0; j < m; j++)
cur_val += hsh[s[0][i]];
penis[i + 1] = cur_val + penis[i];
}
vector<int> dp(n, -INF);
dp[0] = 0;
for (int i = 1; i < n; i++) {
if (ph1[i] != penis[i])
continue;
if (mxx[i] > i)
continue;
for (int j = 0; j < i; j++) {
dp[i] = max(dp[i], dp[j] + 1);
}
}
return dp[n - 1];
}
// int32_t main() {
// using namespace std;
// int t; cin >> t;
// int n, m; cin >> n >> m;
// vector<int32_t> f(n - 1);
// vector<vector<int32_t>> s(m, vector<int32_t>(n - 1));
// for (int32_t &i : f)
// cin >> i;
// for (auto &i : s)
// for (auto &j : i)
// cin >> j;
// cout << solve(n, m, f, s);
// }
| # | 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... |