具有优先级的对象交集

Go Hard structs

任务 «具有优先级的对象交集»

给定两个描述对象的结构集合,每个对象具有标识符、类型和优先级。需要找出同时存在于两个集合中的所有对象(具有相同的标识符和类型),并针对每个这样的对象输出其标识符、类型以及两个集合中的最小优先级。如果某个对象在同一个集合中出现多次,则只考虑第一次出现。结果按标识符升序排列,若标识符相同则按类型(字典序)排列。

输入格式

第一行为整数 N,表示第一个集合中对象的数量。接下来 N 行,每行包含一个标识符(整数)、类型(无空格字符串)和优先级(整数),以空格分隔。下一行为整数 M,表示第二个集合中对象的数量。接下来 M 行,格式相同。

输出格式

对于每个交集对象,输出一行:标识符、类型、最小优先级,以空格分隔。各行按标识符升序排列,若标识符相同则按类型字典序排列。如果没有交集,则输出 'none'。

示例

示例 1

输入
3 1 a 10 2 b 20 3 c 30 2 2 b 15 3 c 25
输出
2 b 15 3 c 25

示例 2

输入
2 1 x 5 2 y 10 2 1 x 7 2 y 12
输出
1 x 5 2 y 10

示例 3

输入
1 2 3 4 3 4 5 6
输出
none

示例 4

输入
1 1 2 2 2 2 3 3
输出
none
main.go