蒟蒻求助,一分没有
  • 板块P1918 保龄球
  • 楼主lyxleo
  • 当前回复5
  • 已保存回复5
  • 发布时间2020/6/14 19:47
  • 上次更新2023/11/7 00:38:35
查看原帖
蒟蒻求助,一分没有
255762
lyxleo楼主2020/6/14 19:47

我的搜索竟然全WA,求各位看看我的搜索怎么错了。本人刚学二分

#include <bits/stdc++.h>
#define ERROR -1
using namespace std;
long long n,q,temp;
queue <int> p;
struct point{
	long long number,i;
}a[100005];
long long sreach(point data[],long long n,long long x){//定义序列和要查找的数字 
	long long l=0,r=n-1,middle;//定义双指针和中间值 
	while(l<=r){
		middle=(l+r)/2;
		if(data[middle].number == x){
			return middle;
		} 
		if(data[middle].number > x){
			r=middle-1;
		}
		else{
			l=middle+1;
		}
	}
	return ERROR;
}
bool cmp(point aa,point bb){
	return aa.number<bb.number;
}

int main(){
	scanf("%lld",&n);
	for(long long i=0;i<n;++i){
		scanf("%lld",&a[i].number);
		a[i].i=i+1;
	}
	sort(a,a+n,cmp);
	scanf("%lld",&q);
	for(long long i=0;i<q;++i){
		scanf("%lld",&temp);
		long long pos=sreach(a,n,temp);
		if(pos != ERROR){
			p.push(pos);
		}
		else{
			p.push(0);
		}
	}
	while(!p.empty()){
		printf("%lld \n",p.front());
		p.pop();
	}
	return 0;
}
2020/6/14 19:47
加载中...