题目描述
现有 n 个大理石,每个大理石上写了一个非负整数。首先把各数从小到大排序,然后回答 Q 个问题。每个问题问是否有一个大理石写着某个整数x,如果是,还要回答是哪个大理石上写着 。排序后的大理石从左到右编号为1...n 。
输入格式
第一行 n,m 两个数。
接下来的一行有 n 个整数,表示x[1]...x[n] 。
接下来 m 行,m 个提问。
输出格式
输出 x 在 A 中排第几小"x found at ans"或 输出"x not found".
样例
样例输入
5 2
1 3 3 3 1
2
3
样例输出
2 not found
3 found at 3
数据范围与提示
1<=n,m<=200000
0<=n[i],x<=
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, m, num[200000];
cin >> n >> m;
for (int i = 0; i < n; i++) {
cin >> num[i];
}
sort(num, num + n);
for (int i = 0; i < m; i++) {
int k, idx;
cin >> k;
idx = lower_bound(num, num + n, k) - num;
if (num[idx] == k) {
cout << k << " found at " << idx + 1;
} else {
cout << k << " not found";
}
cout << endl;
}
return 0;
}