#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define int long long
#define Nando signed
#define demo main
#define F(i, l, r) for(ll i = l; i <= r; ++i)
#define E(i, l, r) for(int i = l; i >= r; --i)
#define MASK(i) (1 << (i))
#define BIT(x, i) (((x) >> (i)) & 1)
#define eb emplace_back
const ll mod = 1e9 + 7;
const int ars = 1e6 + 5;
const int ii = 1e9;
const ll il = 1e18;
int n, m, idx[ars], s[2 * ars], lt[ars], rt[ars], kmp[2 * ars];
struct linked_list {
int n, *l, *r;
linked_list(int n_) : n(n_), l(new int[n_ + 10]), r(new int[n_ + 10]) {
F(i, 1, n) {
l[i] = i - 1;
r[i] = i + 1;
}
}
void del(int i) {
int l_ = l[i], r_ = r[i];
r[l_] = r_;
l[r_] = l_;
}
};
bool check(int i, int j) {
if(i == n + 1) return false;
if(lt[i] and s[j - i + lt[i]] > s[j]) return false;
if(rt[i] and s[j + rt[i] - i] < s[j]) return false;
return true;
}
Nando demo() {
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin >> n >> m;
F(i, 1, n) {
cin >> idx[i];
s[idx[i]] = i;
}
s[n + 1] = 0;
F(i, n + 2, n + 1 + m) cin >> s[i];
linked_list lk(n);
E(i, n, 1) {
lt[i] = idx[lk.l[s[i]]];
rt[i] = idx[lk.r[s[i]]];
lk.del(s[i]);
}
vector<int> res;
int len;
F(i, 2, n + m + 1) {
if(i == n + 1) continue;
len = kmp[i - 1];
while(len > 0 and !check(len + 1, i)) len = kmp[len];
if(check(len + 1, i)) kmp[i] = len + 1;
if(i > n + 1 and kmp[i] == n) res.eb(i - 2 * n);
}
cout << res.size() << "\n";
for(auto x : res) cout << x << " ";
cout << "\n";
return 0;
}
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |