二分查找与二分答案
作业介绍
/*
有序
1 2 3 3 3 4 4 4 5 5 5 5
*/
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6+5;
int n,a[N],q;
int main(){
cin>>n>>q;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=q;i++){
int x;
cin>>x;
int l=1,r=n;
int ans = -1;
while(l<=r){
int mid = (l+r)/2;
if(a[mid]<x){
l = mid+1;
}
else if(a[mid]==x){
ans = mid;
r = mid-1;
}
else if(a[mid]>x){
r = mid-1;
}
}
cout<<ans<<" ";
}
return 0;
}
题目
认领作业后才可以查看作业内容。
- 状态
- 正在进行…
- 题目
- 13
- 开始时间
- 2026-4-19 0:00
- 截止时间
- 2026-4-27 23:59
- 可延期
- 24 小时