Описание

Ограничение по времени: 500 ms
Ограничение по памяти: 256 Mb

Ответы на вопросы

Задача: Moo Language

Фермер Джон заинтересован в лучшем общении со своими собратьями-коровами, поэтому он решил, что он выучит язык мычания!

Язык Moo на самом деле очень похож на английский, но более минималистичный. Там всего четыре типа слов: существительные, переходные глаголы, непереходные глаголы и союзы. Каждые два последовательных слова должны быть разделены пробелом. Там также всего два вида знаков препинания: точки и запятые. Когда точка или запятая ставится после слова, она ставится сразу после слова, а затем с последующим пробелом, если рядом появляется другое слово.

Предложение должно соответствовать одному из следующих форматов:

  • Тип 1: существительное + непереходный глагол.
  • Тип 2: существительное + переходный глагол + существительное(а). В частности, хотя бы одно существительное должен следовать за переходным глаголом, и перед каждым словом должна стоять запятая. следующее существительное, кроме первого следующего существительного.

Два предложения можно соединить в сложносочиненное, если поставить союз между ними. Полученное сложносочиненное предложение не может быть далее объединено с другими предложениями или другими сложными предложениями. Каждое предложение (или составное предложение, если два предложения соединены) должно заканчиваться точкой.

У фермера Джона есть банк слов из \(N\) слов, \(C\) запятых и \(P\) точек. (\(1 \leq P,C\le N \leq 10^3\)). Он может использовать слово или знак препинания столько раз раз, сколько это появляется в банке слова. Помогите ему вывести последовательность предложений, содержащую максимально возможное количество слов.

Каждый входной файл содержит \(T\) (\(1\le T\le 100\)) подтестов.

ФОРМАТ ВВОДА (с клавиатуры/стандартного ввода):

Первая строка содержит \(T\), количество подтестов. Каждый подтест указывает следующее:

Первая строка состоит из трех целых чисел: \(N\), \(C\) и \(P\).

Следующие \(N\) строк будут состоять из двух подстрок, разделённых одиночным пробелом. Первая подстрока будет само слово, которое может использовать FJ (строка не менее 1 и не более 10 строчных букв буквы), а вторая подстрока будет одной из следующих: noun, transitive-verb, intransitive-verb, conjunction, ( соответсвенно существительное, переходный глагол, непереходный глагол или союз) обозначающие тип этого слова. Возможно, одно и то же слово встречается более одного раза в банке слов FJ, но оно всегда будет иметь один и тот же тип при каждом появлении.

ФОРМАТ ВЫВОДА (на терминал / стандартный вывод):

В первой строке выведите максимально возможное количество слов.

Во второй строке выведите любую последовательность предложений с максимально возможным числом слов. Любая допустимая последовательность будет принята.

Грейдер чувствителен к пробелам, поэтому убедитесь, что не выводятся лишние пробелы, особенно в конце каждой строки.


Прикрепите файл с исходным кодом программы:
     
или введите исходный код на языке:


Правила оформления программ и список ошибок при автоматической проверке задач
           

Ваш ответ:

Загруженные файлы:


Нет

Примечание учителя: