当前位置:首页 > 题解目录 > 正文内容

【题解】报数游戏

亿万年的星光3年前 (2022-03-26)题解目录9083

【题目描述】

路飞在和他朋友们一块玩一个游戏。由于路飞的机智,这个游戏由路飞担任裁判。

首先,路飞会给他们一个人一个编号,并且每个人的编号都不相同。接下来的每一个回合,会给一个数,编号不超过它的最大编号

的人要报出自己的编号。如果没有人的编号比路飞给出的数要小,那么编号最小的人要报出自己的编号。每个人可以重复报号。

路飞会按照一个列表顺次报出每个回合的数,他的朋友们想知道每回合报出的编号应该是多少?

【输入描述】

输入数据共3行。

第一行有两个整数n,m( 1<=n<=10, 1<=m<=105 ),分别表示参与游戏的路飞朋友的个数和游戏回合数。

第二行n个整数 ai (1<=ai<=108) ,表示朋友们每个人的编号。对于 0<=i<j<n, 都有 ai<aj,即他们的编号递增排列。

第三行m个整数 qi(1 <= qi <=108), 表示每回合路飞给的数字。

【输出描述】

 输出共一行m个整数,表示每回合报出的编号,每两个整数之间一个空格,最后一个数后面没有空格。

【样例输入】

5 5
1 5 10 15 20
3 6 12 18 24

【样例输出】

1 5 10 15 20

【题目分析】


【参考代码】

#include<iostream>
using namespace std;
int a[100005];

int ans(int l, int r, int x) {
	while(l < r)  {
		int mid = l + r+1 >> 1;
		if(a[mid] <= x)
			l = mid;
		else
			r = mid - 1;
	}
	return a[l];
}
int main() {
	int n, m;
	cin >> n >> m;
	for(int i = 1; i <= n; i++) {
		cin >> a[i];
	}
	int t;
	for(int i = 1; i <= m; i++) {
		cin >> t;
		if(i != m)
			cout << ans(1, n, t) << ' ';
		else
			cout << ans(1, n, t);
	}
	return 0;
}


扫描二维码推送至手机访问。

版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

分享给朋友:

相关文章

合影效果

【题目描述】小云和朋友们去爬香山,为美丽的景色所陶醉,想合影留念。如果他们站成一排,男生全部在左(从拍照者的角度),并按照从矮到高的顺序从左到右排,女生全部在右,并按照从高到矮的顺序从左到右排,请问他...

文具订购(NOI online入门组)

【题目描述】小明的班上共有n元班费,同学们准备使用班费集体购买3种物品。圆规,每个7元。笔,每支4元。笔记本,每本3元。小明负责订购文具,设圆规、笔、笔记本的订购数量为a,b,c,他订购的原则依次如下...

【题解】校运会

【题解】校运会

【题目描述】校运会上,一共有N个参赛选手,已知N个选手的名字。然后老师告诉你M句话,话的内容是学生A与学生B在同一组里。如果学生A与学生B在同一组里,学生B与学生C也在同一组里,就说明学生A与学生C在...

【题解】小X与机器人

【题解】小X与机器人

【题目描述】小X的老师很喜欢围棋。众所周知,围棋的棋盘有19行19列,共有361个交叉点。为方便起见,我们把这些行列按顺序编号为1~19,并用(x, y)表示第x列第y行的位置。例如下图中,A用(16...

字符全排列(2)

【题目描述】从n个字符(n从a开始,依次递增)中选取r个字符,对r个字符进行不重复排列。字典序小的在前面。【输入描述】一行,n和r【输出描述】r个字符的所有组合,每种组合占一行,字符和字符之间用空格隔...

2020CSPJ-直播获奖

【题目描述】NOI2130 即将举行。为了增加观赏性,CCF 决定逐一评出每个选手的成绩,并直播即时的获奖分数线。本次竞赛的获奖率为w%,即当前排名前 w% 的选手的最低成绩就是即时的分数线...