1047 Student List for Course——PAT甲级

Zhejiang University has 40,000 students and provides 2,500 courses. Now given the registered course list of each student, you are supposed to output the student name lists of all the courses.

Input Specification:

Each input file contains one test case. For each case, the first line contains 2 numbers: N (≤40,000), the total number of students, and K (≤2,500), the total number of courses. Then N lines follow, each contains a student's name (3 capital English letters plus a one-digit number), a positive number C (≤20) which is the number of courses that this student has registered, and then followed by C course numbers. For the sake of simplicity, the courses are numbered from 1 to K.

Output Specification:

For each test case, print the student name lists of all the courses in increasing order of the course numbers. For each course, first print in one line the course number and the number of registered students, separated by a space. Then output the students' names in alphabetical order. Each name occupies a line.

Sample Input:

复制代码
10 5
ZOE1 2 4 5
ANN0 3 5 2 1
BOB5 5 3 4 2 1 5
JOE4 1 2
JAY9 4 1 2 5 4
FRA8 3 4 2 5
DON2 2 4 5
AMY7 1 5
KAT3 3 5 4 2
LOR6 4 2 4 1 5

Sample Output:

复制代码
1 4
ANN0
BOB5
JAY9
LOR6
2 7
ANN0
BOB5
FRA8
JAY9
JOE4
KAT3
LOR6
3 1
BOB5
4 7
BOB5
DON2
FRA8
JAY9
KAT3
LOR6
ZOE1
5 9
AMY7
ANN0
BOB5
DON2
FRA8
JAY9
KAT3
LOR6
ZOE1

solution:

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define endl '\n'
int main()
{
	int n,k;cin>>n>>k;
	vector<vector<string> >v(k+1);
	for(int i=0;i<n;i++)
	{
		string name;cin>>name;
		int t;cin>>t;
		while(t--)
		{
			int cnt;cin>>cnt;
			v[cnt].push_back(name);
		}
	}
	for(int i=1;i<=k;i++)
	{
		if(v[i].size())
		{
			sort(v[i].begin(),v[i].end());
			cout<<i<<' '<<v[i].size()<<endl;
			for(int j=0;j<v[i].size();j++)
			{
				cout<<v[i][j]<<endl;
			}
		}
		else//测试点1:没人选的课程也要输出
		{
			cout<<i<<' '<<0<<endl;
		}
	}
}

一个简单的二维vector数组排序。

测试点1:没人选的课程也要输出

相关推荐
今晚打老虎1 小时前
c++之提高A(前缀和)(第三课)
数据结构·c++·算法
不会就选b2 小时前
算法日常・每日刷题--<贪心>26
数据结构·算法
by209992 小时前
从结构体到对象:正式学习C++类的骨架、封装与this指针
c++·经验分享·学习
2601_962218613 小时前
C语言中三种库的编译和使用方法
开发语言·c++
jimy13 小时前
派生类重写基类虚函数(二):override的作用
开发语言·c++
ebiobiz3 小时前
基于 GD32 Embedded Builder (GEB) 与 Nimmake 的 MCU 工程搭建指南
c++·python·单片机·嵌入式硬件·mcu
hetao17338374 小时前
2026-09-29 hetao1733837 的刷题记录
c++·算法
:mnong4 小时前
几何内核“四大金刚“:ACIS、Parasolid、CGM、Open CASCADE 核心特征深度解析
c++·cad·cax
by209994 小时前
从 malloc/free 到 new/delete:真正理解 C++ 中的内存管理与对象生命周期
c语言·c++·经验分享·动态内存管理
欣欣之王来了4 小时前
AI合规专项:AI算法透明度的合规要求
人工智能·算法