红题倍增80pts求调
查看原帖
红题倍增80pts求调
545986
Jerrycyx楼主2024/9/18 19:11

RT,代码如下:

#include<cstdio>
#include<algorithm>
using namespace std;

const int N=10005;
int n;
pair<int,int> a[N];

int main()
{
	scanf("%d",&n);
	for(int i=0;i<n;i++)
	{
		scanf("%d",&a[i].first);
		a[i].second=i;
	}
	int x; scanf("%d",&x);
	stable_sort(a,a+n);
	int p=0,jump=8192;
	while(jump)
	{
		if(p+jump<n && a[p+jump].first<x) p+=jump;
		jump>>=1;
	}
	if(a[p+1].first==x) printf("%d\n",a[p+1].second);
	else printf("-1\n");
	return 0;
}

我知道这道题可以直接判断,但我是把它当作倍增查找的练习题来做的,大佬们勿喷。

错了第四个点,提示是在不应当输出 -1 的地方输出了 -1,调了有一会了,一直不对。

2024/9/18 19:11
加载中...