弱智二分,蒟蒻写RE了
#include<bits/stdc++.h>
using namespace std;
inline int read(){
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
return s*w;
}
inline void write(int x){
if(x==0){putchar('0');return;}
int len=0,k1=x,c[10005];
if(k1<0)k1=-k1,putchar('-');
while(k1)c[len++]=k1%10+'0',k1/=10;
while(len--)putchar(c[len]);
}
const int N=1e5+5;
map<int,vector<int> >mp;
signed main(){
int t=read();
while(t--){
mp.clear();
int n=read();
for(int i=1;i<=n;i++){
int a=read();
mp[a].push_back(i);
}
int q=read();
while(q--){
int l=read(),r=read(),x=read();
int lll=l,ll=l,rrr=r,rr=r;
int cnt=0;
while(ll<=rr){//upperbound
int mid=(ll+rr)>>1;
if(mp[x][mid]>r)rr=mid-1;
else ll=mid+1;
}
cnt=ll;
while(lll<=rrr){//lower_bound
int mid=(lll+rrr)>>1;
if(mp[x][mid]>=l)rrr=mid-1;
else lll=mid+1;
}
cnt-=lll;
//int cnt=upper_bound(mp[x].begin(),mp[x].end(),r)-lower_bound(mp[x].begin(),mp[x].end(),l);
write(cnt),puts("");
}
}
return 0;
}