C1070 - 弹珠在哪里

题目描述

Raju和Meena喜欢玩弹珠。他们有很多写着数字的弹珠。一开始,Raju会按照弹珠上写的数字的升序依次放置弹珠。

然后,Meena会要求Raju找到第一个带有某个数字的弹珠,她会数1...2...3...。如果Raju回答正确,他会得到一分;如果Raju回答错误,这一分则归Meena。在固定次数的尝试之后,游戏结束,得分最多的玩家获胜。

今天轮到你扮演Raju了,作为聪明的孩子,你将会得到计算机的帮助。但不要小看Meena,她写了一个程序来追踪你花费多少时间回答所有问题。

现在你必须编写一个程序,这个程序将会帮助你扮演Raju的角色。

输入格式

有多组测试案例

每个测试案例以两个整数开头:N 表示弹珠的数量,Q 表示Meena会提出的查询数量

接下来的 N 行将包含写在 N 个弹珠上的数字,这些弹珠上的数字不会以任何特定的顺序出现。

接下来的 Q 行将包含 Q 个查询,每个查询给出一个待查询的数字

当 N = 0 且 Q = 0时代表输入结束

输出格式

对于每组测试案例,输出案例的序列号。

对于每个查询,打印一行输出,这一行的格式将取决于查询的数字是否出现在任何弹珠上。

以下描述了两种不同的格式:

  • x found at y,如果找到了编号为 x 的第一个弹珠,并且它位于位置 y,位置从 1 到 N 编号
  • x not found,如果编号为 x 的弹珠不存在

查看示例输入的输出以获取详细信息

输入输出样例

输入样例 输出样例
4 1
2
3
5
1
5
5 2
1
3
3
3
1
2
3
0 0
CASE# 1:
5 found at 4
CASE# 2:
2 not found
3 found at 3

数据范围与提示

50%的数据:$1 \le N, Q \le 1000$,一共不超过5组测试数据,N个整数和待查询的Q个整数中每个整数都在0 ~ 100000之间

100%的数据:$1 \le N, Q \le 100000$,一共不超过5组测试数据,N个整数和待查询的Q个整数中每个整数都在0 ~ 100000之间

提示点

数据量较大,如果使用C++读写(cin + cout),则需要用到C++加速读写的方式

const char endl = '\n';
ios::sync_with_stdio(false);
cin.tie(0);

如果使用C语言风格读写(scanf + printf),则不需要使用上面的C++加速读写的方式

测试点数目

共10个测试点,每个测试点10分

时间与内存限制

每个测试点时间:1000ms(1.0s),内存:256MiB

输入输出模式

本OJ支持两种输入输出模式

1. 标准输入输出模式:
直接从标准输入和标准输出读写数据,不需要使用freopen进行文件输入输出重定向
2. 文件输入输出模式(国内信奥赛输入输出模式):
从文件中读写数据,需要使用freopen进行输入输出重定向
本题输入文件名为:C1070.in,输出文件名为:C1070.out