#include <bits/stdc++.h>
using namespace std;
int a,b;
int z[1000005];
vector<vector<short>> f;
pair<int,int> q[1005];
int pos[1000005];
vector<vector<short>> res;
signed main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> a >> b;
for (int i=1;i<=a;i++){
cin >> z[i];
}
int c;
cin >> c;
for (int i=1;i<=c;i++){
cin >> q[i].first;
q[i].second=i;
}
sort(q+1,q+1+c);
int cur=0;
for (int i=1;i<=b;i++){
pos[i]=1e6;
}
for (int i=1;i<=c;i++){
while (cur<=b && cur<=q[i].first){
pos[cur]=i;
cur++;
}
}
// cerr << "ok" << "\n";
f.resize(a-b+2,vector<short>(c+1));
res.resize(a-b+2,vector<short>(c+1));
for (int i=2;i+b-1<=a;i++){
int sta=1;
int sta1=i;
int cur=0;
for (int j=0;j<b;j++){
if (z[j+sta]!=z[j+sta1]){
cur++;
}
}
if (pos[cur]<=c){
f[sta][pos[cur]]++;
f[sta1][pos[cur]]++;
}
for (int j=i+b;j<=a;j++){
if (z[sta]!=z[sta1]){
cur--;
}
sta++;
sta1++;
if (z[sta+b-1]!=z[sta1+b-1]){
cur++;
}
if (pos[cur]<=c){
f[sta][pos[cur]]++;
f[sta1][pos[cur]]++;
}
}
}
// cerr << "ok" << "\n";
for (int i=1;i<=c;i++){
if (i>1){
for (int j=1;j<=a-b+1;j++){
f[j][i]+=f[j][i-1];
}
}
for (int j=1;j<=a-b+1;j++){
res[j][q[i].second]=f[j][i];
}
}
// cerr << "ok" << "\n";
for (int i=1;i<=c;i++){
for (int j=1;j<=a-b+1;j++){
cout << res[j][i] << " ";
}
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... |