Intersección de objetos con prioridades

Go Hard structs

Tarea «Intersección de objetos con prioridades»

Se dan dos conjuntos de estructuras que describen objetos con identificador, tipo y prioridad. Es necesario encontrar todos los objetos que están presentes en ambos conjuntos (tienen el mismo identificador y tipo), y para cada uno de esos objetos mostrar su identificador, tipo y la prioridad mínima de los dos conjuntos. Si un objeto aparece más de una vez en un mismo conjunto, solo se considera la primera aparición. Mostrar el resultado en orden ascendente por identificador, y en caso de empate, por tipo (lexicográficamente).

Formato de entrada

En la primera línea, un número entero N — la cantidad de objetos en el primer conjunto. Luego N líneas, cada una contiene el identificador (número entero), tipo (cadena sin espacios) y prioridad (número entero) separados por un espacio. En la siguiente línea, un número entero M — la cantidad de objetos en el segundo conjunto. Luego M líneas en el mismo formato.

Formato de salida

Para cada objeto que se intersecta, mostrar una línea: identificador, tipo, prioridad mínima separados por un espacio. Las líneas se ordenan de forma ascendente por identificador, y en caso de empate, por tipo lexicográficamente. Si no hay intersecciones, mostrar 'none'.

Ejemplos

Ejemplo 1

ENTRADA
3 1 a 10 2 b 20 3 c 30 2 2 b 15 3 c 25
SALIDA
2 b 15 3 c 25

Ejemplo 2

ENTRADA
2 1 x 5 2 y 10 2 1 x 7 2 y 12
SALIDA
1 x 5 2 y 10

Ejemplo 3

ENTRADA
1 2 3 4 3 4 5 6
SALIDA
none

Ejemplo 4

ENTRADA
1 1 2 2 2 2 3 3
SALIDA
none
main.go