A Qualifiers Ranking Rules---The 2023 ICPC Asia Regionals Online Contest (1)

The following is the current ranking rules for the ICPC Asia EC Online Qualifiers, and there will be two online contests.

  1. In each contest, only the rank of the top-ranked team from each university will be taken as the score of that university;
  2. In each contest, participating universities will be ranked according to their scores;
  3. The two rankings of universities are combined using the merge sorting method. For any two universities that obtain the same ranking in different contests, the university that received this ranking in the first contest will be ranked first.
  4. Delete duplicate universities and obtain the final ranking of all participating universities (only the highest rankings for each university are retained).

Now assuming that there are n teams in the first contest and m teams in the second contest.

For each contest, given the ranking of each team and the university to which it belongs, please output the final ranking of all participating universities according to the above rules.

You can better understand this process through the sample.

Input

The first line contains two integers n,m (1≤n,m≤1e4) , representing the number of teams participating in the first contest and the second contest.

Then following n lines, the i-th line contains a string si​ (1≤∣si​∣≤10) only consisting of uppercase letters, representing the abbreviation of the university to which the i-th ranked team in the first contest belongs.

Then following m lines, the i-th line contains a string ti​ (1≤∣ti​∣≤10) only consisting of uppercase letters, representing the abbreviation of the university to which the i-th ranked team in the second contest belongs.

It's guaranteed that each university has only one abbreviation.

Output

Output several lines, the i-th line contains a string, representing the abbreviation of the i-th ranked university in the final ranking.

You should ensure that the abbreviation of any participating universities appears exactly once.

Input Sample

复制代码
14 10
THU
THU
THU
THU
XDU
THU
ZJU
THU
ZJU
THU
NJU
WHU
THU
HEU
PKU
THU
PKU
PKU
ZJU
NUPT
THU
NJU
CSU
ZJU

Output Sample

复制代码
THU
PKU
XDU
ZJU
NJU
NUPT
WHU
HEU
CSU

Hint

Sample is part of the results in 2022 ICPC Asia EC Online Contest.

In the first contest, the ranking of the universities is:

复制代码
THU
XDU
ZJU
NJU
WHU
HEU

In the second contest, the ranking of the universities is:

复制代码
PKU
THU
ZJU
NUPT
NJU
CSU

By combining these two rankings according to the rules, the rankings of the universities is:

复制代码
THU
PKU
XDU
THU
ZJU
ZJU
NJU
NUPT
WHU
NJU
HEU
CSU

By deleting duplicate universities we will get the final ranking.

解析:

首先对于两个榜单,统计并且去重。

然后对于榜单a和b进行遍历,并且记录是否重复。

注意,有的学校可能没参加某一场,所以可能导致两场榜单去重之后长度不一样。

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+5;
int n,m;
string s;
vector<string>a,b,res;
set<string>p;
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++){
		cin>>s;
		if(p.count(s)==0){
			p.insert(s);
			a.push_back(s);
		}
	}
	p.clear();
	for(int i=1;i<=m;i++){
		cin>>s;
		if(p.count(s)==0){
			p.insert(s);
			b.push_back(s);
		}
	}
	p.clear();
	for(int i=0;i<min(a.size(),b.size());i++){
		if(a[i]==b[i]){
			p.insert(a[i]);
			cout<<a[i]<<endl;
		}
		else{
			if(p.count(a[i])==0){
				cout<<a[i]<<endl;
				p.insert(a[i]);
			}
			if(p.count(b[i])==0){
				cout<<b[i]<<endl;
				p.insert(b[i]);
			}
		}
	}
	for(int i=min(a.size(),b.size());i<max(a.size(),b.size());i++){
		if(a.size()>b.size()){
			if(p.count(a[i])==0){
				p.insert(a[i]);
				cout<<a[i]<<endl;
			}
		}
		else{
			if(p.count(b[i])==0){
				p.insert(b[i]);
				cout<<b[i]<<endl;
			}
		}
	}
	return 0;
}
相关推荐
止观止4 分钟前
JavaScript对象创建9大核心技术解析
开发语言·javascript·ecmascript
哦吼!1 小时前
数据结构—二叉树(二)
数据结构
AA陈超1 小时前
虚幻引擎UE5专用服务器游戏开发-20 添加基础能力类与连招能力
c++·游戏·ue5·游戏引擎·虚幻
mit6.8241 小时前
[Meetily后端框架] AI摘要结构化 | `SummaryResponse`模型 | Pydantic库 | vs marshmallow库
c++·人工智能·后端
screenCui1 小时前
macOS运行python程序遇libiomp5.dylib库冲突错误解决方案
开发语言·python·macos
R-G-B1 小时前
【02】MFC入门到精通——MFC 手动添加创建新的对话框模板
c++·mfc·mfc 手动添加创建新的对话框
linux kernel2 小时前
第七讲:C++中的string类
开发语言·c++
jz_ddk2 小时前
[实战]调频(FM)和调幅(AM)信号生成(完整C语言实现)
c语言·算法·信号处理
Tipriest_2 小时前
[数据结构与算法] 优先队列 | 最小堆 C++
c++·优先队列·数据结构与算法·最小堆
玩代码2 小时前
Java线程池原理概述
java·开发语言·线程池