#K. 【模板】二分(二)

    传统题 1000ms 128MiB

【模板】二分(二)

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

Description

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

Input Format

第一行两个整数n,q

第二行n个整数组成的有重复元素的有序序列(从小到大)

接下来q行,每行一个x,表示要查找的数


Output Format

x在序列中第一次出现的位置

如果没有找到则输出-1

5 2
1 3 3 5 8
3
4
2
-1

Hint

#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;
}

Source

二分

2023龙游秋学期周六第10次课1216/零基础第9次

未参加
状态
已结束
规则
ACM/ICPC
题目
11
开始于
2023-12-16 8:00
结束于
2023-12-16 22:00
持续时间
14 小时
主持人
参赛人数
8