二分球条
查看原帖
二分球条
704275
无名之雾楼主2024/3/30 13:06

弱智二分,蒟蒻写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;
}
2024/3/30 13:06
加载中...