栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

智力回答(C++)下标计数进阶

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

智力回答(C++)下标计数进阶

题目描述:

新年联欢会上,John负责组织智力问答节目。John建立了一个很大很大的超级题库,并衡量了每道题的难度wi。由于不可以让选手一上场就被绝顶难题撂倒,所以难度必须循序渐进,从简到繁。 

John制定了一套具体的抽题规则。首先,每位选手的第1道题一定是当前题库中最简单的。每位选手的下一道题,一定是题库中(1)比刚刚答过的题严格地更难,(2)难度尽可能低的题。当然,每道题使用一遍就从题库中删掉。(可以参考样例数据) 

John刚开完联欢会很累,所以他提供了抽题程序的日志,希望你能重现答题的过程。  

简单起见,你只需要依次输出每位选手都答了哪些难度的题就可以了。

输入格式

第1行,整数n, m。代表题库最初的题目数n,和选手数m。 

第2行,n个整数wi,代表每道题目的难度,0≤wi≤100000。 

第3行,m个整数ai,代表依次每位选手作答的题目数量。(1<=ai≤50) 

---------------------------------------------------------------------------------------------------------------------------------

40%的数据中,m≤50, n≤1000。 

100%的数据中,m≤1000, n≤100000。 

测试数据保证每位选手都不会出现无题可选的情况。

输出格式

包含n行。 

第i行,每行ai个整数,代表选手i回答的每道题目的难度。 

选手和每位选手的题目均按比赛时间的推移有序。

输入/输出例子1

输入:

12 4

30 1 7 3 1 14 8 20 2 1 999 2

4 2 3 1

输出:

1 2 3 7

1 2

1 8 14

20

样例解释

说明:游戏开始前的题库是{30, 1, 7, 3, 1, 14, 8, 20, 2, 1, 999, 2}。

选手1,依次作答了难度为1, 2, 3, 7的四道题。作答后题库剩余{30, 1, 14, 8, 20, 1, 999, 2}。

选手2,依次作答了难度为1, 2两道题。作答后题库剩余{30, 14, 8, 20, 1, 999}。

选手3,依次作答了难度为1, 8, 14三道题。作答后题库剩余{30, 20, 999}。

选手4,作答了难度为20的一道题,作答后题库剩余{30, 999}。

分析:

这道题主要考下标技术,可以用以下方式增加下标:

cin>>x;
a[x]++;

话不多说,上AC代码:

#include 
using namespace std;
int a[10000100],n,m,s,x,ma=-10000,t;
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		cin>>x;a[x]++;ma=max(x,ma);
		
	}
	for(int i=1;i<=m;i++)
	{
		cin>>t;s=0;
		for(int j=0;j<=ma;j++)
		{
			if(a[j]>0)
			{
				a[j]--;
				s++;
				cout<=t) break;
			}
		}
		cout< 

本文仅供参考,请勿抄袭!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/717124.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号