1. Камінці
Максимальна оцінка: 100 балів
Обмеження на час: 0,15 сек.
Обмеження на пам’ять: 4 MБ
Вхідний файл: stones.in
Вихідний файл: stones.out
Програма: stones.*
n ямок розташовано у ряд. Для натурального k у межах від 1 до n через jk позначимо кількість камінців у k-ій ямці, якщо рахувати ямки зліва направо.
Нехай при деякому натуральному m > 1 послідовність натуральних чисел l1, l2, …, lm зростає.
Двоє гравців грають таким чином:
за один хід дозволяється перекласти з будь-якої ямки у сусідню праворуч (порядок розташування ямок для обох гравців однаковий) лише таку кількість камінців, що дорівнює одному з чисел l1, l2, …, lm;
програє той, хто не може зробити хід (коли в усіх ямках, крім крайньої праворуч, кількість камінців менша за l1).
1-ий рядок вхідного файлу stones.in містить у вказаному порядку натуральні числа n та m, які лежать в межах від 2 до 5 включно.
2-ий рядок цього файлу містить у вказаному порядку послідовність n невід'ємних цілих чисел: j1, j2, …, jn.
3-ій рядок цього файлу містить послідовність m натуральних чисел: l1, l2, …. , lm,
що зростає, причому l1 + l2 + … + lm < 246.
Назвемо позицією цієї гри розташування камінців у ямках і номер гравця, чия черга ходити. Відомо, що кількість всіх можливих позицій гри не перевищує 1000.
Створіть програму stones.*, яка у 1-ий рядок вихідного файлу stones.res запише номер гравця (спочатку ходить 1-ий гравець, потім — 2-ий), який може ґарантувати собі виграш. Якщо це буде 1, то кожен з наступних рядків цього самого файлу повинен містити по n невід'ємних цілих чисел, що є кількостями камінців у ямках після 1-го ходу, який веде до перемоги 1-го гравця. Потрібно подати у довільному порядку всі можливі варіанти, по 1 рядку на кожний варіант ходу.
Приклади
stones.dat | stones.dat |
---|---|
3 2 4 0 1 2 3 | 2 |
3 2 2 2 1 2 3 |
1 2 0 3 |
2. Вечірка
Максимальна оцінка: 100 балів
Обмеження на час: 0,15 сек.
Обмеження на пам’ять: 4 MБ
Вхідний файл: party.in
Вихідний файл: party.out
Програма: party.*
Завдання
Створіть програму, яка допоможе встановити, як розсілися за круглим столом студенти (обличчям до центру столу) й фах кожного з учасників вечірки.
Вхідні дані
Кожен рядок файлу складається з 3-х частин, розділених пропусками:
ім'я або фах учасника вечірки;
cимвол для позначення його розташування відносно того учасника вечірки, ім'я або фах якого вказані наприкінці твердження:
ім'я або фах учасника вечірки.
Всі рядки, крім останнього, закінчуються комою, а останній — крапкою. Всі літери у словах файлу малі, крім перших літер імен. Апостроф не використано. Кількість учасників вечірки, кількість літер у кожному слові та кількість рядків файлу не перевищують 25. Імена та фахи всіх учасників перераховано у файлі party.dat. Всі слова — у називному відмінку. Всі імена та фахи — різні.
Вихідні дані
Кожний рядок файлу має містити по одному, відмінному від інших, варіанту розташування студентів за столом, який не суперечить умові задачі і вхідним даним. Потрібно вказати імена учасників вечірки у порядку обходу столу проти руху годинникової стрілки, якщо дивитися згори: кожний наступний учасник сидить праворуч від попереднього. Починати перелік потрібно з імені студента, яке буде першим у списку імен, впорядкованих у алфавітному порядку української абетки:
А Б В Г Ґ Д Е Є Ж З И І Ї Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ь Ю Я. Після кожного імені (через пропуск) потрібно вказати в дужках фах студента. Ім'я кожного наступного учасника потрібно відділити комою і пропуском, а в кінці рядка поставити крапку. Всі слова — у називному відмінку.
Приклад
party.in | party.out |
---|---|
філолог | Кирило, Кирило < історик, біолог > Віталій, Федір > Євген, хімік > Федір. | Віталій (хімік), Кирило (біолог), Євген (історик), Федір (філолог). |
Зауваження щодо кодування літер кирилиці: використовувати кодову таблицю cp1251. Якщо є сумніви, код програми і вміст тестових файлів потрібно набрати/проглянути, використовуючи Блокнот (Notepad).