Notas Emoji

O professor Pedro precisa da tua ajuda. Enquanto escrevia um programa de investigação, fez pipe das notas de Programação Competitiva para um conversor de texto em emoji, sem guardar uma cópia do ficheiro original. O programa substituiu letras e algarismos por símbolos Unicode e acrescentou espaços no fim de cada linha. A seed do gerador era 42.

Recupera a pauta e apresenta-a numa tabela legível. O professor pede um programa em C, sem bibliotecas externas e com o mesmo resultado independentemente da configuração regional do computador.

A tua tarefa

Descodifica o cabeçalho e cada par nome/nota. Conserva a ordem dos alunos e os espaços simples dentro dos nomes. Ignora os espaços acrescentados à direita e volta a alinhar as colunas.

O conversor perdeu a distinção entre maiúsculas e minúsculas. Por isso, todos os nomes e o cabeçalho de saída são escritos em maiúsculas. Não é possível recuperar de forma inequívoca a capitalização original.

Conversão dos símbolos

São aceites exclusivamente as seguintes formas:

Entrada Saída Regra
A a Z A a Z Letras ASCII já descodificadas.
🇦 a 🇿 A a Z Indicadores regionais U+1F1E6 a U+1F1FF, por ordem alfabética. Cada ponto de código é uma letra, mesmo quando dois aparecem como uma bandeira.
🅰, 🅱, Ⓜ, 🅾, 🅿 A, B, M, O, P U+1F170, U+1F171, U+24C2, U+1F17E, U+1F17F. Cada símbolo pode ser seguido de U+FE0F.
0 a 9 0 a 9 Algarismos ASCII.
0⃣ a 9⃣, ou 0️⃣ a 9️⃣ 0 a 9 Algarismo ASCII, opcionalmente U+FE0F, seguido de U+20E3.
Espaço ASCII Espaço U+0020.

U+FE0F é um seletor de apresentação: nas posições indicadas, altera o desenho do símbolo, não o seu significado. Não é aceite isoladamente, depois de um indicador regional, ou depois de um algarismo sem U+20E3. Uma linha pode misturar todas as formas aceites. Não há acentos nem letras minúsculas nos nomes.

Entrada

Saída

Seja W o máximo entre 4 e o comprimento do nome mais longo, contado depois da descodificação. Escreve:

  1. NOME, completado à direita com espaços até ocupar W caracteres, seguido de dois espaços e NOTA.
  2. Para cada aluno, o nome completado até W caracteres, dois espaços e a nota decimal sem zeros iniciais.
  3. A linha Cumprimentos algorítmicos!.

Não acrescentes espaços depois das notas. Todas as linhas de saída, incluindo a última, terminam em LF. A frase final mantém o acento e é escrita em UTF-8.

Exemplo

Entrada:

🇳🅾️Ⓜ️🇪  🇳🅾️🇹🅰️
🅰️🇳🅰️  2⃣0⃣
🇱🇺🇮🇸  0️⃣7️⃣

Saída:

NOME  NOTA
ANA   20
LUIS  7
Cumprimentos algorítmicos!

ANA tem um espaço de preenchimento e dois espaços de separação.

Limites

Tempo: 2 segundos. Memória: 64 MiB.

Exemplos para descarregar

Entrada · Saída esperada · Pauta de vinte alunos · Saída dessa pauta.

Diogo Peralta Cordeiro · Programação Competitiva (CC3036) · DCC/FCUP · 2021