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
- Texto UTF-8 na entrada padrão, até ao fim do ficheiro. As linhas terminam em LF ou CRLF; a última pode não ter terminador.
- A primeira linha não vazia contém
NOME, entre 2 e 32 espaços, eNOTA, nas formas acima. - Seguem-se 1 a 10 000 alunos, um por linha. Cada nome descodificado tem entre 1 e 80 caracteres, começa e acaba numa letra e só contém letras A–Z e espaços simples entre palavras.
- O nome e a nota são separados por 2 a 32 espaços. A nota tem um ou dois algarismos e representa um inteiro de 0 a 20, inclusive. Um zero inicial é permitido.
- Cada linha pode terminar em 0 a 16 espaços extra. Podem existir linhas vazias ou só com espaços antes do cabeçalho e depois do último aluno, mas não no meio da pauta.
- Os dados do juiz respeitam estas regras.
Saída
Seja W o máximo entre 4 e o comprimento do nome mais
longo, contado depois da descodificação. Escreve:
NOME, completado à direita com espaços até ocupar W caracteres, seguido de dois espaços eNOTA.- Para cada aluno, o nome completado até W caracteres, dois espaços e a nota decimal sem zeros iniciais.
- 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