#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
const int maxn = 10000 + 5;
int marble[maxn];
int n, q, x;
int main()
{
int Case = 0;
while(~scanf("%d %d", & n, & q))
{
if(!n && !q) //n == 0 并且 q == 0 弹出
break;
printf("CASE# %d:\n", ++Case); //格式
for(int i = 0; i < n; i ++)
scanf("%d", & marble[i]);
sort(marble, marble + n); //排序
while(q --)
{
scanf("%d", & x);
int Find = lower_bound(marble, marble + n, x) - marble; //查找下标
if(marble[Find] == x)
printf("%d found at %d\n", x, Find + 1); //下标是从0开始的 所以要+1
else
printf("%d not found\n", x);
}
}
}
题意:输入n,q,之后输入n个数。q表示查询次数。输入q个数 进行查询。然后问哪个数字是从小到大排在第几的,重复出现算第一个。
题解:STL : 排序sort 查找low_bound(a, a + n, x)