URI Online Judge | 2023
A Última Criança Boa
Por M.C. Pinto, UNILA
Brazil
Timelimit: 1
Brazil
Papai Noel classifica todas as crianças do mundo em duas listas: uma das boazinhas e outra das malcriadas. Ele gostaria de saber qual das crianças do mundo é a última da lista de boazinhas, se usar a ordem alfabética. Para isso, ele pediu a todos seus elfos ajudantes que escrevessem os nomes das crianças boas em uma folha.
Entretanto, cada elfo escreveu os nomes de um jeito: maiúscula no início e minúsculas depois, todas maiúsculas, todas minúsculas, e todo tipo de combinação entre maiúsculas e minúsculas.
Papai Noel quer sua ajuda para, dada a lista de nome das crianças boas, dizer qual delas é a última.
Entrada
A entrada possui várias linhas. Em cada linha há o nome de uma criança boa. Nenhum elfo escreveu os nomes com acentos. O maior nome tem no máximo 80 caracteres. Não existem mais de 1000 crianças na lista. Todos os nomes são distintos. A lista de nomes termina com EOF.
Saída
A saída é dada em uma linha. O nome da criança que fica na última posição da lista deve ser mostrado. Mostre o nome exatamente como foi lido na entrada. Use a ordem alfabética dos nomes para ordenar, mas considere maiúsculas e minúsculas como iguais.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int strcicmp(char const *a, char const *b)
{
for (;; a++, b++) {
int d = tolower(*a) - tolower(*b);
if (d != 0 || !*a)
return d;
}
}
int compare(const void *a, const void *b)
{
const char *s1 = (const char *) a;
const char *s2 = (const char *) b;
return strcicmp(s2, s1);
}
int main()
{
char kids[1000][101];
int num_kids = 0;
while (fgets(kids[num_kids], 101, stdin))
++num_kids;
qsort(kids, num_kids, 101, compare);
printf("%s", kids[0]);
return 0;
}
Nenhum comentário:
Postar um comentário