【模板】二分(二)
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
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