This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#define maxN 10005
using namespace std;
vector <int> v;
vector <pair<int,int>> u;
int n,l,q,k[maxN][105],s[2*maxN],ans[105],x,i,j;
void update(int koji,int p){
//cout<<koji<<" "<<p<<endl;
while(p<=u.size()){
k[koji][p]++;
p+=p & (-p);
}
}
int query(int koji,int p){
int ans=0;
while(p>0){
ans+=k[koji][p];
p-=p & (-p);
}
return ans;
}
void ispisi(int x){
int i,j;
for(i=0;i<u.size();i++){
if(u[i].second==x){
for(j=0;j<n-l+1;j++) cout<<query(j,i+1)<<" ";
}
}
cout<<endl;
}
int main() {
cin>>n>>l;
for(i=0;i<n;i++){
cin>>x;
v.push_back(x);
}
cin>>q;
for(i=0;i<q;i++){
cin>>x;
u.push_back({x,i});
}
sort(u.begin(),u.end());
for(i=1;i<=n-l;i++){
for(j=i;j<n;j++){
s[j]=s[j-1];
if(v[j]==v[j-i]) s[j]++;
//cout<<j<<" "<<s[j]<<endl;
}
for(j=0;j+l+i-1<n;j++){
int tmp,p;
tmp=s[j+l+i-1]-s[j+i-1];
p=lower_bound(u.begin(),u.end(),make_pair(l-tmp,-5))-u.begin();
//cout<<j<<" "<<i<<" "<<p<<endl;
update(j,p+1);
update(j+i,p+1);
}
for(j=0;j<n;j++) s[j]=0;
}
for(i=0;i<q;i++) ispisi(i);
return 0;
}
Compilation message (stderr)
lot.cpp: In function 'void update(int, int)':
lot.cpp:12:8: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
while(p<=u.size()){
~^~~~~~~~~~
lot.cpp: In function 'void ispisi(int)':
lot.cpp:29:10: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(i=0;i<u.size();i++){
~^~~~~~~~~
# | 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... |