#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
struct e{ //这里的e用于cmp函数的参数的定义,不要省略
int f, num;
}a[100010];
bool cmp(e a, e b) { //这里可以修改sort对a的排列方式
return a.num < b.num; //比如说这里是将a中的num按升序排列
}
int main() {
int n, m, l, r, mid, k;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a[i].num;
a[i].f = i + 1;
}
sort(a, a + n, cmp); //用sort给结构体排序的关键就是第三个参数cmp
cin >> m;
for (int i = 0; i < m; i++) {
cin >> k;
l = 0, r = n-1;
while (l != r) {
mid = (l + r) / 2;
if (a[mid].num >= k) r = mid; //这里是二分法,需要注意避免死循环
else l = mid+1;
}
if (a[l].num == k) cout << a[l].f<< endl;
else cout<< 0 << endl;
}
return 0;
}
用sort函数给结构体排序模板
最新推荐文章于 2024-03-24 13:36:19 发布