列表

详情


NC212910. 组队分配

描述

ACM团队为即将到来的省赛举行了一场校内选拔赛,这场比赛共有个人参与,每个人在比赛中的排名已经给出。
现在团队希望按照排名分配,组成个队伍。组队的规则是:排名从,名次为 的人组成一个队伍,称为“ACM-'a'”队,例如由第一名、第二名、第三名组成的队伍就叫“ACM-0”,由第四名、第五名、第六名组成的队伍就叫“ACM-1”。
现在给你这个人的名字以及排名,需要聪明的你给出最终的组队方案。组队方案按照如下规则输出:每个队伍一行,按“队名 队员一姓名 队员二姓名 队员三姓名”的格式输出,要求每个队中的队员按照排名从大到小排列。

输入描述

数据的第一行有一个t,代表t组数据
每组数据的第一行有一个n,代表题目中的n。
接下来的3n行,每一行由一个字符串s和一个数字a组成,s和a由一个空格隔开,保证字符串中不含有空格。

输出描述

输出n行,每行按照“队名 队员一姓名 队员二姓名 队员三姓名”的格式输出,行末无多余空格。

示例1

输入:

1
1
a 1
b 3
c 2

输出:

ACM-0 b c a

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++(clang++11) 解法, 执行用时: 234ms, 内存消耗: 18612K, 提交时间: 2020-11-11 16:21:57

#include<iostream>
#include<cstring>
using namespace std;
int t,n,a;
string mp[500005],x;
int main(){
	cin>>t;
	while(t--){
		cin>>n;
		for(int i=0;i<3*n;++i){
			cin>>x>>a;
            mp[a]=x;
		}
		for(int i=0;i<n;++i){
			cout<<"ACM-"<<i<<" "<<mp[3*i+3]<<' '<<mp[3*i+2]<<' '<<mp[3*i+1]<<endl;
		}
	}
return 0;
}

Python3 解法, 执行用时: 485ms, 内存消耗: 24808K, 提交时间: 2021-10-11 19:31:38

t=int(input())
for i in range(t):   
    n=int(input())
    lb={}
    for i in range(3*n):
        s,a=map(str,input().split())
        lb[int(a)]=s    
    for a in range(n):
        print("ACM-{0}".format(a),lb[3*a+3],lb[3*a+2],lb[3*a+1])

上一题