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

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

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

题目描述

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

#include <cstdio>

#include <iostream>

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(____(1)_____)
    {
         mid=(left+right)/2;
         if(k<=arr[mid])
         ______(2)_______;
         else
          ______(3)_______;
    }
    if(____(4)_____)
    cout<<left;
    else
    cout<<-1;
}

输入

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

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

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

输出

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

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

提示

来源

[提交][状态]