#include <bits/stdc++.h>
#define int long long
using namespace std;
int a,b;
int t[1000005];
int z[1000005];
int base=31;
int mod=1e9+7;
int mu[1000005];
int val;
vector <int> v;
struct node{
int val,cnt;
};
node f[4000005];
node combine(node a,node b){
node res;
res.cnt=a.cnt+b.cnt;
res.val=(a.val+b.val*mu[a.cnt]%mod)%mod;
return res;
}
void update(int id,int l,int r,int pos,pair<int,int> val){
if (l==r){
f[id].val=val.first;
f[id].cnt=val.second;
return;
}
int mid=(l+r)/2;
if (pos<=mid){
update(id*2,l,mid,pos,val);
}else{
update(id*2+1,mid+1,r,pos,val);
}
f[id]=combine(f[id*2],f[id*2+1]);
}
signed main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> a >> b;
for (int i=1;i<=a;i++){
cin >> t[i];
}
for (int i=1;i<=b;i++){
cin >> z[i];
v.push_back(z[i]);
}
sort(v.begin(),v.end());
for (int i=1;i<=b;i++){
z[i]=lower_bound(v.begin(),v.end(),z[i])-v.begin()+1;
}
mu[0]=1;
int preres=0;
for (int i=1;i<=a;i++){
mu[i]=(mu[i-1]*base)%mod;
preres=(preres+mu[i-1])%mod;
val=(val+(mu[i-1]*t[i]))%mod;
}
vector <int> res;
for (int i=1;i<=b;i++){
pair<int,int> pre={i,1};
update(1,1,b,z[i],pre);
if (i>a){
pre={0,0};
update(1,1,b,z[i-a],pre);
}
if (i>=a){
// cout << "ok" << "\n";
if (f[1].val==val){
res.push_back(i-a+1);
}
val=(val+preres)%mod;
}
}
cout << res.size() << "\n";
for (auto p:res){
cout << p << " ";
}
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... |