别抄题解2
2023-07-24 16:10:39
发布于:河北
30阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 1e5+5;
int a[MAXN],n,q;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
cin>>q;
while(q--){
int x;
cin>>x;
/*
第一个等于num的位置 lower
最后一个等于num的位置 upper
第一个大于num的位置 upper
如果相应的位置不存在 就输出-1
*/
int low = lower_bound(a+1,a+n+1,x)-a; //第一个 >= x 的位置
int upp = upper_bound(a+1,a+n+1,x)-a; //第一个 > x 的位置
// 1.不存在 num 或者找到的不是 num
if(low == n+1 || a[low] != x) cout<<"-1";
else cout<<low;
// 2.前一个位置合法且等于 num
cout<<" ";
if(upp-1 > 0 && a[upp-1] == x) cout<<upp-1;
else cout<<"-1";
//3.没有找到第一个大于 num 的数值
cout<<" ";
if(upp == n+1) cout<<"-1";
else cout<<upp;
cout<<"\n";
}
return 0;
}
全部评论 2
你跟张子瑜是一个班吗
2024-08-19 来自 天津
0在吗
2024-08-19 来自 天津
0
有帮助,赞一个