Interseção de objetos com prioridades

Go Hard structs

Tarefa «Interseção de objetos com prioridades»

Dados dois conjuntos de estruturas que descrevem objetos com identificador, tipo e prioridade. É necessário encontrar todos os objetos que estão presentes em ambos os conjuntos (possuem o mesmo identificador e tipo) e, para cada um desses objetos, exibir seu identificador, tipo e a prioridade mínima entre os dois conjuntos. Se um objeto aparecer mais de uma vez em um mesmo conjunto, considera-se apenas a primeira ocorrência. Exibir o resultado em ordem crescente de identificador; em caso de empate, por tipo (lexicograficamente).

Formato de Entrada

Na primeira linha, um número inteiro N — a quantidade de objetos no primeiro conjunto. Em seguida, N linhas, cada uma contendo identificador (número inteiro), tipo (string sem espaços) e prioridade (número inteiro) separados por espaço. Na linha seguinte, um número inteiro M — a quantidade de objetos no segundo conjunto. Depois, M linhas no mesmo formato.

Formato de Saída

Para cada objeto em interseção, exibir uma linha: identificador, tipo e prioridade mínima separados por espaço. As linhas são ordenadas por identificador crescente; em caso de empate, por tipo lexicograficamente. Se não houver interseções, exibir 'none'.

Exemplos

Exemplo 1

ENTRADA
3 1 a 10 2 b 20 3 c 30 2 2 b 15 3 c 25
SAÍDA
2 b 15 3 c 25

Exemplo 2

ENTRADA
2 1 x 5 2 y 10 2 1 x 7 2 y 12
SAÍDA
1 x 5 2 y 10

Exemplo 3

ENTRADA
1 2 3 4 3 4 5 6
SAÍDA
none

Exemplo 4

ENTRADA
1 1 2 2 2 2 3 3
SAÍDA
none
main.go