#include<bits/stdc++.h>
#pragma GCC target("avx2")
#pragma GCC optimize("Ofast")
#define ll int
#define pb push_back
#define ff first
#define ss second
using namespace std;
int n,q,a,k,l;
vector<int>v,poz;//duze jedno do usuniecia
vector<pair<int,int>>pom;
int pod[10007];
int ans[107][10007];
int licz[107][10007];
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n>>l;
for(int i=0;i<n;i++){
cin>>a;
v.push_back(a);
}
cin>>q;
for(int i=0;i<q;i++){
cin>>k;
k=l-k;
pom.push_back({k,i});
}
sort(pom.begin(),pom.end());
for(int i=0;i<l-1;i++){
for(int j=i+1;j<n;j++){
if(v[i]==v[j])pod[j-i]++;
}
}
for(int i=l-1;i<n;i++){
if(i!=l-1){
i=i-l;
for(int j=i+1;j<n;j++){
if(v[i]==v[j])pod[j-i]--;
}
i=i+l;}
for(int j=i+1;j<n;j++){
if(v[i]==v[j])pod[j-i]++;
}
vector<ll>tb[10007];
for(int j=i+1;j<n;j++){
tb[pod[-i+j]].pb(i-l+1);
tb[pod[j-i]].pb(j-l+1);
}int ak=0;
for(int i=pom[0].ff;i<10007;i++){
while(ak<pom.size()-1 && pom[ak+1].ff<=i)ak++;
for(int j : tb[i])licz[ak][j]++;
}
}
for(int i=q-1;i>=0;i--){
for(int j=0;j<n-l+1;j++){
if(i+1<q)
licz[i][j]+=licz[i+1][j];
ans[pom[i].ss][j]=licz[i][j];
// cout<<licz[i][j]<<" ";
}
cout<<"\n";
}
for(int i=0;i<q;i++){
for(int j=0;j<n-l+1;j++){
cout<<ans[i][j]<<" ";
}
cout<<"\n";
}
}
# | 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... |