洛谷P2249【深基13.例1 查找】

首页 » LeetCode » 正文

题目描述

输入 n(n/le10^6)n(n≤106) 个不超过 10^9109 的单调不减的(就是后面的数字不小于前面的数字)非负整数 a_1,a_2,/dots,a_{n}a1​,a2​,…,an​,然后进行 m(m/le10^5)m(m≤105) 次询问。对于每次询问,给出一个整数 q(q/le10^9)q(q≤109),要求输出这个数字在序列中的编号,如果没有找到的话输出 -1 。

输入格式

第一行 2 个整数 n 和 m,表示数字个数和询问次数。

第二行 n 个整数,表示这些待查询的数字。

第三行 m 个整数,表示询问这些数字的编号,从 1 开始编号。

输出格式

m 个整数表示答案。

输入输出样例

输入 #1

11 3
1 3 3 3 5 7 9 11 13 15 15
1 3 6

输出 #1

1 2 -1 

代码如下:

#include <bits/stdc++.h>
#define MAXN 10000000

using namespace std;

long long arr[MAXN];

long long binarySearch(long long left, long long right,long long x)
{
    long long mid;

    while(left<=right)
    {
        mid=(right-left)/2+left;
        if(arr[mid]>=x)
        {
            right=mid-1;
        }else if(arr[mid]<=x)
        {
            left=mid+1;
        }
    }
    if(arr[left]==x)
        return left;
    return -1;
}

int main()
{
    long long n,m,i;
    cin>>n>>m;
    for(i=1; i<=n; i++)
    {
        cin>>arr[i];
    }
    while(m--)
    {

        cin>>i;
        cout<<binarySearch(1,n,i)<<" ";
    }
    return 0;
}

 

标签:

拜师教育学员文章:作者:1001-高同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《洛谷P2249【深基13.例1 查找】》 发布于2020-04-13

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录