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
,调了有一会了,一直不对。