Пересечение объектов с приоритетами

Go Сложный 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