Олимпиадный тренинг

Задача . 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, но оно всегда будет иметь один и тот же тип при каждом появлении.

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

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

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

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


Примеры
Входные данныеВыходные данные
1 3
1 1 1
bessie noun
10 5 4
bessie noun
taught transitive-verb
flew intransitive-verb
elsie noun
farmer noun
john noun
and conjunction
and conjunction
nhoj noun
mooed intransitive-verb
24 5 4
but conjunction
bessie noun
taught transitive-verb
flew intransitive-verb
elsie noun
farmer noun
john noun
and conjunction
and conjunction
nhoj noun
mooed intransitive-verb
bob noun
impressed transitive-verb
cow noun
impressed transitive-verb
leaped intransitive-verb
elsie noun
bella noun
buttercup noun
pushed transitive-verb
mooed intransitive-verb
envy noun
john noun
nhoj noun
0

9
nhoj mooed. farmer taught elsie, bessie and john flew.
23
nhoj mooed. nhoj impressed john, farmer, elsie, bessie and cow impressed bob. bella pushed elsie and buttercup flew. envy mooed but john leaped.

time 500 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
Комментарий учителя