1. Вуличнi перегони
Максимальна оцінка: 100 балів
Обмеження на час: 0,15 сек.
Обмеження на пам’ять: 4 MБ
Вхідний файл: race.in
Вихідний файл: race.out
Програма: race.*
Орґанiзацiйний комiтет велосипедних перегонiв Лазуровий Берег-99 звернувся до жандармерiї Сан-Тропе з проханням дозволити провести велосипеднi перегони вулицями цього курортного мiстечка таким чином, щоб кожен учасник мав би певну свободу у виборi шляху до фiнiшу. Жандармерiя у вiдповiдь надiслала в органiзацiйний комiтет план проведення таких перегонiв. На плані пункти-перехрестя було позначено кругами i занумеровано натуральними числами в межах вiд 1 до певного натурального числа n, а окремi дiлянки перегонiв — вулицi з одностороннiм рухом — позначено стрiлками. На цьому планi:
старт — пункт, з якого можна досягнути будь-який пункт перегонiв, i який неможливо досягнути з будь-якого iншого пункту;
фiнiш — пункт, який можна досягнути з будь-якого iншого пункту, i з якого неможливо досягнути жоден iнший пункт.
Деякi пункти неможливо уникнути на шляху вiд старту до фiнiшу, не рахуючи останнiх.
Деякi з пунктiв, якi неможливо уникнути на шляху вiд старту до фiнiшу, розбивають план перегонiв на два плани. Інакше кажучи:
кожен новоутворений план має пункти, вiдмiннi вiд старту й фiнiшу цього плану;
новоутворенi плани не мають спiльних стрiлок, але мають єдиний спiльний пункт, що є фiнiшом для одного плану i стартом для iншого. Цей спільний пункт неможливо досягнути рухом вздовж стрілок, почавши рух з нього самого.
Завдання
Створiть програму, яка допоможе членам органiзацiйного комiтету провести аналiз поданого плану.
Вхідні дані
Кiлькiсть рядкiв вхiдного файлу дорiвнює n — кiлькостi всiх пунктiв перегонiв, що не перевищує 222. Для j в межах вiд 1 до n включно j-ий рядок цього ж файлу мiстить номери кiнцевих пунктiв тих стрiлок, якi виходять з j-го пункту.
Вихідні дані
Перший рядок вихiдного файлу має мiстити у вказаному порядку номери пунктiв, що є стартом i фiнiшом.
Другий рядок цього самого файлу має мiстити кiлькiсть пунктiв, якi неможливо уникнути на шляху вiд старту до фiнiшу та номери цих пунктiв у порядку зростання.
Третiй рядок цього самого файлу має мiстити кiлькiсть пунктiв, якими можна розбити поданий план перегонiв на окремi плани, та номери цих пунктiв у порядку зростання.
Приклад
race.in | race.out | план |
---|---|---|
3 3 4 5 6 6 7 8 9 5 9 1 2 |
10 9 2 3 6 1 3 |
2. Криптограма
Максимальна оцінка: 100 балів
Обмеження на час: 0,15 сек.
Обмеження на пам’ять: 4 MБ
Вхідний файл: cripto.in
Вихідний файл: cripto.out
Програма: cripto.*
Завдання
Створiть програму , яка дешифрує запису дiї додавання, в якому всi доданки роздiлено знаком +, перед сумою стоїть знак =, а кожну цифру замiнено на лiтеру, причому:
Вхідні дані
Перший рядок вхiдного файлу мiстить натуральне число, яке є основою системи числення i лежить в межах вiд 5 до 10 включно.
Другий рядок цього самого файлу мiстить запис дії додавання. Роздiлення доданкiв, суми, знакiв + i = додатковими прогалинами не передбачено.
Вихідні дані
Файл має містити всi способи дешифрацiї поданого запису дiї додавання по одному у кожному рядку без повторення (порядок довільний).
Приклад
cripto.in | cripto.out |
---|---|
10 ten+ten+forty=sixty |
850+850+29786=31486 |