Задача Div2-A. Аккорд.
Нужно понять первым делом простую мысль - ноты по сути являются остатками по модулю 12. А значит минорный аккорд имеет вид {x, x+3, x+7} (mod 12), а мажорный - {x, x+4, x+7}.
Считывать ноты удобно как строки, после чего их лучше тут же заменить на соответствующее число от 0 до 11 - их номером. Для обработки надо было перебрать 6 возможных порядков следования нот в аккорде. Для каждого из 6 порядков проверить, является ли аккорд мажорным или минорным, и если так, то сразу вывести.
Не бывает одновременно минорного и мажорного аккорда - это проверяется перебором шести возможных систем сравнений.
Задача Div2-B. Клавиатура.
Для каждой из букв алфавита в двух вариантах - заглавном и строчном - последовательно проверяем, можно ли ее напечатать одной рукой, если нет, то печатается ли она двумя руками, или же вообще никаким количеством рук не печатается :-)
Для проверки рассматриваем несколько случаев.
Если буква маленькая, то надо просто проверить, есть ли такая буква на клавиатуре, и если нет, то она не печатается.
Если буква большая, то надо проверить для каждой клавиши с соответствующей буквой, если ли поблизости Shift, просто перебрав все пары кнопок на клавиатуре.
Если такой буквы нет ни одной, или нет ни одного Shift, то такая буква тоже не печатается.
Если же такая пара нашлась, но на слишком большом расстоянии, то для набора этой буквы требуется вторая рука.
Просуммируем по всем буквам текста количество рук, требуемых для набора, и вывалимся с -1, если какая-то буква не набирается ну вот совсем. Сложность - |T| + 52 * (n· m)2, и этого вполне достаточно.
Полный текст и комментарии »