二分求调
  • 板块学术版
  • 楼主butterbread
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/7/7 23:03
  • 上次更新2023/11/3 11:07:10
查看原帖
二分求调
553981
butterbread楼主2023/7/7 23:03

rt

#include<bits/stdc++.h>
using namespace std;
int n,m,x;
struct stu{
	int val;
	int num;
};
bool cmp(stu x,stu y){
	return x.val<y.val;
}
stu a[100001];
int main() {
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i].val);
		a[i].num=i;
	}
	sort(a+1,a+n+1,cmp);
	scanf("%d",&m);
	for(int i=1;i<=m;i++){
		scanf("%d",&x);
		int l=1,r=n,mid;
		while(l<=r){
			mid=(l+r)/2;
			if(a[mid].val<x)l=mid+1;
			else if(a[mid].val>x)r=mid-1;
			if(m>=1&&m<=n&&a[mid].val==x){
				printf("%d\n",a[mid].num);
				break;
			}
		}
		if(a[mid].val!=x)printf("0");
	}
	return 0;
}

教练说二分没写对,求改进方案 (附题目:https://oj.czos.cn/p/2217)

2023/7/7 23:03
加载中...