#include <bits/stdc++.h>
using namespace std;
int n,l;
int a[200001];
int q;
pair<int,int> k[200001];
void read()
{
cin>>n>>l;
for(int i=1;i<=n;i++)
cin>>a[i];
cin>>q;
for(int i=1;i<=q;i++)
{
cin>>k[i].first;
k[i].second=i;
}
}
int f[200001];
int ans[10001][105];
int ans2[10001][105];
void solve()
{
sort(k+1,k+q+1);
for(int i=0;i<=l+1;i++)
f[i]=q+1;
for(int i=1;i<=q;i++)
f[k[i].first]=i;
for(int i=l;i>=0;i--)
f[i]=min(f[i],f[i+1]);
for(int d=1;d<=n-l;d++)
{
int cnt=0;
for(int i=1;i<=n-l+1;i++)
{
int j=i+d;
if(j+l-1>n)continue;
if(i==1)
{
for(int x=0;x<l;x++)
if(a[x+i]!=a[x+j])cnt++;
}
else
{
if(a[i-1]!=a[j-1])cnt--;
if(a[i+l-1]!=a[j+l-1])cnt++;
}
ans[i][f[cnt]]++;
ans[j][f[cnt]]++;
//cout<<i<<" "<<j<<" "<<cnt<<" "<<f[cnt]<<endl;
}
}
for(int i=1;i<=q;i++)
{
//cout<<i<<" "<<k[i].second<<endl;
for(int j=1;j<=n;j++)
{
if(i)ans[j][i]+=ans[j][i-1];
ans2[j][k[i].second]=ans[j][i];
}
}
for(int i=1;i<=q;i++)
{
for(int j=1;j<=n-l+1;j++)
{
cout<<ans2[j][i]<<" ";
}
cout<<endl;
}
}
int main()
{
read();
solve();
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... |