应该算是二分答案+结构体
2025-06-17 23:09:29
发布于:广东
1阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
const int N = 2e5+10;
int a[N];
int n,x;
struct node{
int number;
int id;
}b[N];
bool cmp(node x,node y){
return x.number<y.number;
}
int bs(int k){
int ans = 0;
int l=1,r=n;
while(l<=r){
int mid = (l+r)>>1;
if( k>b[mid].number){
l = mid + 1;
}else{
r = mid - 1;
ans = mid;
}
}
if(b[ans].number == k){
return ans;
}else{
return 0;
}
}
int main(){
cin >> n;
for(int i =1;i<=n;i++){
cin >> b[i].number;
b[i].id = i;
}
sort(b+1,b+n+1,cmp);
int m;
cin >> m;
while(m--){
int x;
cin >> x;
cout <<b[bs(x)].id<<endl;
}
return 0;
}
这里空空如也
有帮助,赞一个