问题 4202 --二分查找(完善程序)

4202: 二分查找(完善程序)★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 1770  解决: 702
[提交][状态][命题人:]

题目描述

给出有 n 个元素的由小到大的序列,请你编程找出某元素最后一次出现的位置。(n<=10^6) 

#include <bits/stdc++.h>
using namespace std;
int arr[1000005],n,k; 
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    scanf("%d",arr+i);
    scanf("%d",&k);
    int left=1,right=n,mid;
    while(left<right)
    {
         _____(1)______;
         if(k<arr[mid])
         	right=_____(2)_____;
         else
          	left=____(3)______;
    }
    if(_____(4)_____)
    	cout<<_____(5)______;
    else
		cout<<-1;
}

输入

第一行:一个整数,表示由小到大序列元素个数;

下面 n 行,每行一个整数;

最后一行 一个整数 x,表示待查找的元素;

输出

如果 x 在序列中,则输出 x 最后一次出现的位置,否则输出-1。

样例输入
Copy
5
3
5
6
6
7
6
样例输出
Copy
4

提示

来源

[提交][状态]