6260. Организация соревнования
Маленькие Дима и Петя хотят
организовать соревнование. Их маленькие друзья выслали им несколько задач.
Теперь Дима и Петя должны выбрать несколько задач для соревнования. Поскольку
они еще маленькие, то не могут оценить качество задач, однако они знают что в
хорошем контесте заглавия первой задачи начинаются с буквы A, заглавия второй
задачи – с буквы B и так далее.
Заданы заглавия
предложенных задач. Помогите братьям определить наибольшее количество задач в
хорошем соревновании, которое они смогут организовать.
Вход. Первая строка содержит одно число n – количество предложенных задач, полученных маленькими братьями
(1 ≤ n ≤ 100).
Следующие n строк содержат заглавия предложенных
задач, по одной в строке. Длина каждого заглавия не превосходит 30 символов.
Каждое заглавие начинается с заглавной буквы и содержит буквы только латинского
алфавита, цифры и символы подчеркивания.
Выход. Вывести одно
число – наибольшее возможное количество задач в хорошем соревновании. Если
хорошего соревнования устроить нельзя, вывести 0.
Пример входа
12
Arrangement_of_Contest
Ballot_Analyzing_Device
Correcting_Curiosity
Dwarf_Tower
Energy_Tycoon
Flight_Boarding_Optimization
Garage
Heavy_Chain_Clusterization
Intellectual_Property
J
Kids_in_a_Friendly_Class
Lonely_Mountain
Пример
выхода
12
сортировка подсчетом
Используя сортировку
подсчетом найдем, сколько имеется названий задач, начинающихся с каждой буквы.
Далее найдем лексикографически наименьшую заглавную букву c, с которой не начинается ни одного названия. Тогда наибольшее
возможное количество задач в хорошем соревновании равно c – 'A’.
Реализация алгоритма
Объявим используемые
массивы. m[i] содержит количество
названий задач, начинающихся с буквы, ASCII код которых равен i.
#define MAX 260
int m[MAX];
char s[50];
Читаем входные данные.
Совершаем сортировку подсчетом.
scanf("%d\n",&n);
for(i = 0; i < n; i++)
{
gets(s);
m[s[0]]++;
}
Ищем лексикографически наименьшую заглавную букву, с которой не начинается
ни одного названия. Целочисленная переменная i содержит ASCII код такой буквы.
for(i = 'A';
i <= 'Z'; i++)
if (m[i] == 0) break;
Выводим
наибольшее возможное количество задач в хорошем соревновании.
printf("%d\n", i
- 'A');