WA on #1 #2 #2
TLE on #4 #5 #6 #7 #8 #9 #10
有人帮忙看一下吗,谢谢
#include<iostream>
#include<cstring>
#include<map>
#include<algorithm>
using namespace std;
struct modui{
int l,r,x,id;
}c[100050];
int a[100050];
int b[100050],cnt;
int d[100050];
int ans[100050];
int n,q;
bool cmp(modui x,modui y)
{
if(x.l==y.l) return x.r<=y.r;
return x.l<y.l;
}
void mn()
{
map<int,int> mp;
memset(d,0,sizeof(d));
cnt=0;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
b[i]=a[i];
}
sort(b+1,b+n+1);
for(int i=1;i<=n;i++)
{
if(b[i]!=b[i-1]) mp[b[i]]=++cnt;
}
for(int i=1;i<=n;i++)
{
a[i]=mp[a[i]];
}
//for(int i=1;i<=n;i++) cout<<i<<':'<<a[i]<<'\n';
//cout<<'\n';
cin>>q;
for(int i=1;i<=q;i++)
{
cin>>c[i].l>>c[i].r>>c[i].x;
c[i].x=mp[c[i].x];
c[i].id=i;
}
sort(c+1,c+q+1,cmp);
int ll=0,rr=0;
for(int i=1;i<=q;i++)
{
while(rr<c[i].r)
{
d[a[++rr]]++;
}
while(rr>c[i].r)
{
d[a[--rr]]--;
}
while(ll<c[i].l-1)
{
d[a[++ll]]--;
}
//cout<<c[i].id<<' '<<c[i].l<<' '<<c[i].r<<' '<<c[i].x<<' '<<d[c[i].x]<<'\n';
ans[c[i].id]=d[c[i].x];
}
for(int i=1;i<=q;i++) cout<<ans[i]<<'\n';
}
int main()
{
int t;
cin>>t;
while(t--) mn();
return 0;
}