13
ACM-ICPC Ukraine 2014, Перший етап Україна, 26 квітня 2014 року A. Лексикографічний порядок Не так давно уряд Рутенії оголосив про запуск нового проекту, головна мета якого – зробити країну рушійною силою в ІТ-сфері. Головним завданням цього проекту є модернізація всієї освітньої системи Рутенії. Звичайно, Степан дізнався про це й зацікавився, адже він активно обирав університет для свого подальшого навчання. Отже, Степан зробив свій вибір – він студент Рутенського національного університету (РуНУ). Життя заграло яскравими барвами: хлопець невтомно вивчає культуру та традиції невідомої для себе Рутенії, познайомився з дівчиною Марисею, навчився виживати в гуртожитку. Проте студентське життя не таке вже й солодке, ви маєте це знати. Допоможіть вирішити проблеми, що спіткали Степана, і вийти з ситуації, не осоромившись перед Марисею; розв’язати задачу, що задали на парі, яку він прогуляв разом з тією ж Марисею: Вважатимемо, що одне натуральне число лексикографічно менше від іншого, якщо таке відношення виконується для їхніх записів у десятковій системі числення. Вам необхідно знайти k-е по порядку число в лексикографічно відсортованій послідовності натуральних чисел від 1 до N включно. Формат вхідних даних: у першому рядку записані два цілі числа N і k (1 ≤ k N ≤ 10 9 ). Формат вихідних даних: виведіть єдине число – k-й в лексикографічному порядку елемент послідовності натуральних чисел від 1 до N. Приклади Input Output 10 2 10

Україна, 26 квітня 2014 рокуweb.znu.edu.ua/acm/2014/tasks-1-stage-2014-fixed.pdfВиведіть одне число - відповідь до задачі. Приклади

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

ACM-ICPC Ukraine 2014, Перший етап Україна, 26 квітня 2014 року

A. Лексикографічний порядок

Не так давно уряд Рутенії оголосив про запуск нового проекту, головна мета якого – зробити країну рушійною силою в

ІТ-сфері. Головним завданням цього проекту є модернізація всієї освітньої системи Рутенії. Звичайно, Степан дізнався про це й

зацікавився, адже він активно обирав університет для свого подальшого навчання.

Отже, Степан зробив свій вибір – він студент Рутенського національного університету (РуНУ). Життя заграло

яскравими барвами: хлопець невтомно вивчає культуру та традиції невідомої для себе Рутенії, познайомився з дівчиною

Марисею, навчився виживати в гуртожитку.

Проте студентське життя не таке вже й солодке, ви маєте це знати. Допоможіть вирішити проблеми, що спіткали

Степана, і вийти з ситуації, не осоромившись перед Марисею; розв’язати задачу, що задали на парі, яку він прогуляв разом з

тією ж Марисею:

Вважатимемо, що одне натуральне число лексикографічно менше від іншого, якщо таке відношення виконується для

їхніх записів у десятковій системі числення. Вам необхідно знайти k-е по порядку число в лексикографічно відсортованій

послідовності натуральних чисел від 1 до N включно.

Формат вхідних даних: у першому рядку записані два цілі числа N і k (1 ≤ k ≤ N ≤ 109).

Формат вихідних даних: виведіть єдине число – k-й в лексикографічному порядку елемент послідовності натуральних чисел від 1 до N.

Приклади Input Output

10 2 10

ACM-ICPC Ukraine 2014, Перший етап Україна, 26 квітня 2014 року

B. Відрізки РуНУ святкує день університету. На свято запрошують найрозумніших студентів Рутенії. Оскільки Степан хоче

потрапити до списку запрошених, то йому потрібно розв'язати задачу. Всі знають що це особливий день, тому і задача

виявилась дуже складною і особливою. Та Степан не засмучується тому, що знає людей, які йому допоможуть. І ці люди - це

Ви. Чи зможете ви не підвести Степана, і потрапити на свято разом з ним? Зараз перевіримо!

В задачі дано N відрізків, які задано двома числами L та R (ліва та права межа відрізка відповідно). Вам потрібно

знайти кількість чисел, які діляться на 5, і належать хоча б одному із заданих відрізків.

Формат вхідних даних: У першому рядку розташовано одне число N (1 ≤ N ≤ 105). Далі – N рядків, у кожному із яких записано по два цілі числа

L, R (1 ≤ L ≤ R ≤ 1018). Формат вихідних даних:

Виведіть одне число - відповідь до задачі.

Приклади Input Output

2 1 5 5 10

2

ACM-ICPC Ukraine 2014, Перший етап Україна, 26 квітня 2014 року

C. Лелеки Степан і Марися після пар прийшли в зоопарк. Найбільше Степану сподобалися лелеки. Він був вражений їх здатністю

спати на одній нозі.

У вольєрі знаходяться декілька лелек. Деякі з них стоять на двох ногах, деякі - на одній. Коли лелека стоїть на одній

нозі, то іншу його ногу не видно. Степан перерахував видимі ноги всіх лелек, і отримав число a.

Через декілька хвилин до вольєра підійшла Марися. За цей час деякі лелеки могли поміняти позу, тому Степан

запропонував їй знову перерахувати видимі ноги лелек. Коли Марися це зробила, то отримала число b.

Вийшовши із зоопарку, Степан з Марисею зацікавилися, скільки ж усього лелек було у вольєрі. Незабаром вони

зрозуміли, що однозначно визначити це число можна не завжди. Тепер вони хочуть зрозуміти, яка мінімальна і яка

максимальна кількість лелек могла бути у вольєрі.

Потрібно написати програму, яка за заданими числами a і b виведе мінімальну та максимальну кількість лелек, яка

могла бути в вольєрі.

Формат вхідних даних: Два цілих числа a і b, відокремлених точно одним пропуском (1 ≤ a ≤ 109, 1 ≤ b ≤ 109).

Формат вихідних даних: Виведіть два цілих числа, розділених пропуском — мінімальне і максимальне число лелек, які могли бути у вольєрі.

Гарантується, що хоча б один варіант відповіді існує.

Пояснення до прикладів: В наведеному прикладі можливі такі варіанти:

1) У вольєрі два лелеки. Коли Степан рахував ноги, один лелека стояв на двох ногах, а інший — на одній. Степан

нарахував три ноги. Коли Марися рахувала ноги, обидва лелеки стояли на двох ногах, Марися нарахувала чотири ноги.

2) У вольєрі три лелеки. Коли Степан рахував ноги, усі лелеки стояли на одній нозі, Степан нарахував три ноги. Коли

Марися рахувала ноги, один лелека стояв на двох ногах, а ще два — на одній. Марися нарахувала чотири ноги.

Приклади Input Output

3 4 2 3

ACM-ICPC Ukraine 2014, Перший етап Україна, 26 квітня 2014 року

D. System of equations Після відпочинку з Марисею в зоопарку, Степан нарешті сів за домашнє завдання з алгебри. Звісно, усі його думки

пов'язані з Марисею, а тому він ніяк не може розв'язати наступну задачу:

Нехай S(n) дорівнює сумі цифр числа n, де n – невід’ємне ціле число. Знайдіть кількість розв’язків такої системи:

x y AS x S y S A

Всі числа – цілі невід’ємні.

Допоможіть йому.

Формат вхідних даних: Єдиний рядок містить число А (0 ≤ А ≤ 10100) записане без ведучих нулів.

Формат вихідних даних: Єдиний рядок має містити одне число – кількість розв’язків даної системи.

Пояснення до прикладу: для наведеного прикладу маємо 4 розв’язки: (x=0, y=11), (x=11, y=0), (x=1, y=10), (x=10, y=1).

Приклади Input Output

11

4

ACM-ICPC Ukraine 2014, Перший етап Україна, 26 квітня 2014 року

E. Лінивий студент Степан - геніальний програміст. Принаймні, він так вважає. І все, що розповідають на програмуванні, йому давно

відомо. Тому замість того, щоб слухати викладача, Степан придумав наступну гру: він бере з собою газету і викреслює в тексті

всі літери, що містять «порожнини». Наприклад, він викреслює букви о і а, але пропускає w та с. Степан вважає, що таким

чином він тренує уважність. Однак йому якось треба перевіряти, що він ніде не помилився. Він вважає, що для цього достатньо

перевірити, що кількість викреслених букв правильна. Тому він просить вас написати програму, що визначає, скільки букв має

бути викреслено в заданому тексті.

Формат вхідних даних: Рядок з рядкових латинських букв і пропусків - текст, який Степан брав із собою на урок. Довжина рядка не перевищує 100000

символів.

Формат вихідних даних: Виведіть відповідь до задачі

Приклади Input Output

a sample sentence

7

jing jang walla walla bing bang

12

abcdefghijklmnopqrstuvwxyz

8

ACM-ICPC Ukraine 2014, Перший етап Україна, 26 квітня 2014 року

F. Linguist Марися, на відміну від Степана, навчається на лінгвістичному факультеті РуНУ, і, очевидно, не дуже полюбляє

математику і все, що з нею пов’язано. Вона, як і усі студенти факультету, панічно боїться чисел, в яких модуль різниці будь-

яких двох сусідніх цифр більше ніж 1 (такі дивні ці мовознавці).

Степану вкрай необхідно знайти всі числа, які він може використовувати, щоби не зашкодити психологічному стану

Марисі. Але часу до їх зустрічі залишилося зовсім мало, порахуйте хоча б кількість N-значних додатніх цілих чисел, які Степан

зможе використовувати при зустрічі з Марисею.

Формат вхідних даних: В єдиному рядку записано число N (1 ≤ N ≤ 20).

Формат вихідних даних: В єдиному рядку виведіть кількість N-значних додатніх чисел, які Степан сміливо зможе використовувати при зустічі з

Марисею, не завдавши при цьому ніякої моральної шкоди.

Приклади Input Output

1 9

ACM-ICPC Ukraine 2014, Перший етап Україна, 26 квітня 2014 року

G. Покупки Степана Рутенія - чудова країна. В країні дуже цікава грошова система! У них в ходу золоті, срібні та бронзові монети, звані

відповідно галеони, сиклі, і кнати. Один галеон містить сімнадцять сиклів, а один сикль - двадцять дев'ять кнатів. Всі грошові

дані (ціни, готівка) формулюються в галеонах, сиклях і кнатах, причому кількість сиклів не перевищує 16, а кількість кнатів - 28.

У Степана сьогодні свято - він отримав першу стипендію. Однак святкувати зарано - вступникам треба купити

абсолютно необхідні для навчання речі: студентський рюкзак, будильник, подушку ...

Скільки грошей виявиться у Степана після усіх покупок?

Формат вхідних даних: Перший рядок містить кількість грошей, отриманих Степаном (три числа - кількість галеонів, сиклів і кнатів, записані

через пропуски. Нагадаємо, що кількість сиклів не перевищує 16, а кількість кнатів - 28).

У другому рядку записано число N (0 ≤ N ≤ 100000) – кількість предметів, які необхідно купити. Далі йдуть N рядків з цінами

кожного предмета (в такому ж форматі, що й перший рядок). Кожен куплений предмет коштує не менше одного кната.

Обмеження на дані: кількість галеонів в кожному з рядків не перевищує 100 000.

Формат вихідних даних: Єдиний рядок має містити інформацію про кількість грошей, що залишилися у Степана після здійснення всіх покупок (в

такому ж форматі, що й перший рядок вхідних даних). Якщо грошей не вистачить, виведіть число -1.

Приклади Input Output

5 16 10 2 3 9 21 0 4 0

2 2 18

1000 0 0 5 200 0 0 200 0 0 200 0 0 200 0 0 200 0 1

-1

ACM-ICPC Ukraine 2014, Перший етап Україна, 26 квітня 2014 року

H. Правила дорожнього руху Степан придбав автомобіль і вирішив покатати свого молодшого брата. Петрик зайняв переднє місце пасажира. На що

Степан одразу процитував правила дорожнього руху Рутенії (в країні усі дотримуються правил дорожнього руху, навіть

студенти): забороняється перевозити дітей, зріст яких менший за 145 см на передньому сидінні. На скільки см слід

підрости Петрику, щоб сидіти на передньому сидінні, якщо зараз його зріст складає N см.

Формат вхідних даних: Єдиний рядок з даним числом N (1 ≤ N ≤ 145).

Формат вихідних даних: Необхідно вивести одне число – на скільки сантиметрів слід підрости Петрику.

Приклади Input Output

100

45

ACM-ICPC Ukraine 2014, Перший етап Україна, 26 квітня 2014 року

I. Степанові будильники Степан живе в гуртожитку, і як "гарний" студент дуже часто просипає пари. Щоб хоч якось вплинути на ситуацію,

батьки вирішили подарувати Степану аж два будильники. Тепер Степан ставить обидва будильники на один і той самий час,

оскільки сигналу одного будильника замало, щоб його розбудити. До того ж, батьки передбачили, що Степан може все ж таки

проспати, тому перший будильник буде дзвонити кожні n хвилин, а другий – кожні m хвилин. Напишіть програму, яка допоможе

визначити, через скільки хвилин обидва будильники задзвонять одночасно вдруге.

Формат вхідних даних: Єдиний рядок містить два числа n, m (1 ≤ n, m ≤ 2*109).

Формат вихідних даних: Виведіть одне число – час у хвилинах, через який обидва будильники задзвонять одночасно вдруге.

Приклади Input Output

2 3 6 6 21 42

ACM-ICPC Ukraine 2014, Перший етап Україна, 26 квітня 2014 року

J. Прямокутник та шляхи У Степана через кілька хвилин побачення з Марисею, а він ніяк не може роз'язати наступну задачу:

Задано прямокутник розміру A на B, протилежні кути якого мають координати (0,0) та (A,B). У прямокутнику розташовано N

точок, пронумерованих від 1 до N. Точка номер i має координати (X[i],Y[i]). Точки, координати яких можна записати як (0, y), назвемо лівими. Аналогічно, точки вигляду (A, y) назвемо правими. Деякі точки з’єднані відрізками, по яких можна рухатись від

точки до точки. По відрізку можна рухатись або в обох напрямках, або тільки в одному, залежно від типу відрізка. Відрізки не

мають спільних точок (перетинів, накладань), окрім кінців відрізків.

Підрахуйте для кожної точки з лівої сторони (нехай це точка Q) кількість точок з правої сторони, таких що з них можна

добратись до точки Q по відрізках. Допоможіть йому!

Формат вхідних даних: В першому рядку задано 4 числа N, M, A, B – кількість точок, кількість відрізків, та розміри прямокутника (1 ≤ N ≤

300 000, 0 ≤ M ≤ 900 000, 1 ≤ A,B ≤ 109). В наступних N рядках задано цілі координати точок в прямокутнику. Жодні 2 точки не співпадають. Наступні M рядків описують

відрізки трійками x, y, k (1 ≤ k ≤ 2). Якщо k=1, то по відрізку можна рухатись лише від точки X до Y. Якщо k=2, то по даному

відрізку можна рухатись в обох напрямках.

Формат вихідних даних: Виведіть відповідь для кожної точки з лівої сторони. Впорядкуйте точки за спаданням y-координати точок.

Приклади Input Output Input Output 12 13 7 9 0 1 0 3 2 2 5 2 7 1 7 4 7 6 7 7 3 5 0 5 0 9 3 9 1 3 2 3 2 1 3 4 1 4 5 1 5 6 1 9 3 1 9 4 1 9 7 1 9 12 2 10 9 1 11 12 1 12 8 1 12 10 1

4 4 0 2

5 3 1 3 0 0 0 1 0 2 1 0 1 1 1 4 1 1 5 2 3 5 2

2 0 2

ACM-ICPC Ukraine 2014, Перший етап Україна, 26 квітня 2014 року

K. Степан і сірники Степан дуже полюбляє гратись із сірниками. Але він не пустує з ними, не розпалює вогонь, а вирішує різні

головоломки. Наприклад, він уміє перетворювати число дев'ять на число одинадцять, переклавши лише один сірник.

Нещодавно друзі Степана подарували йому декілька наборів, кожен з яких складається з дванадцяти сірників. Він

почав збирати з них різні геометричні фігури. Степан вже зібрав багато різних фігур, але тепер йому стало цікаво, з яких

наборів можна склеїти каркас паралелепіпеда з дванадцяти сірників з набору та з допомогою клею? Ламати сірники не можна, і

жоден із сірників не повинен виступати за каркас.

Ваше завдання полягає в тому, щоб за відомими довжинами сірників для кожного набору перевірити, чи можна з них

склеїти каркас паралелепіпеда.

Формат вхідних даних: перший рядок містить одне ціле число N (1 ≤ N ≤ 100), що задає кількість наборів.

Далі йдуть N рядків, кожен з яких містить у собі опис набору сірників - дванадцять цілих доданих чисел, які не перевищують

109.

Формат вихідних даних: N рядків. Для кожного набору сірників виведіть “yes”, якщо з нього можливо склеїти каркас паралелепіпеда, і “no” в

іншому випадку.

Приклади Input Output

2 1 1 1 1 2 2 2 2 3 3 3 3 1 1 1 1 2 2 2 2 3 3 3 4

yes no

ACM-ICPC Ukraine 2014, Перший етап Україна, 26 квітня 2014 року

L. Марися і Степан Марися і Степан граються в рутенську диво-гру. Правила гри дуже прості: гравці називають по одному числу, той хто

назве більше число – виграє. Марися завжди програє, адже, нічого не підозрюючи, називає своє число першою. Степан

занадто марновірний, а тому вважає, що якщо число, яке він назве, не буде щасливим, то прийде лихо, і Марися здогадається,

в чому причина її програшів. Степан вважає число щасливим, якщо сума цифр першої половини числа рівна сумі цифр другої

половини числа (не зважаючи на середню цифру, якщо число складається с непарної кількості цифр). Наприклад, числа 4, 515,

63190 є щасливими, а 10, 112, 1231 – ні.

На наступний день вони домовились зіграти на диво-банан. На превеликий жаль для Степана на початку гри Марися

запропонувала йому ходити першим. Тепер Степан розуміє, що лише чудо дозволить йому виграти диво-банан, а тому він

вирішив назвати не просто щасливе число, а двічі щасливе. Він вважає, що число двічі щасливе, якщо воно щасливе в

звичайному сенсі, а також, якщо сума його цифр на парних та непарних місцях співпадає (окрім, знову ж таки, середньої цифри,

якщо число складається з непарної кількості цифр). Наприклад числа 11, 19319 – двічі щасливі, а 3, 414 – ні. На розчарування

Степана, Марися швидко придумала число більше за його число і виграла диво-банан.

Внаслідок чи то занадто великої щасливості числа, названого Степаном, чи то азарту самої Марисі, чи то якихось

інших невідомих нам обставин на наступний день Марися запропонувала зіграти одразу на два диво-банани, а також, що є

найбільш важливим для Степана, Марися захотіла називати число першою. Тепер Степан не хоче змарнувати свого шансу, а

тому вам, доведеться написати програму, що за числом, загаданим Марисею, знайде найменше число, що перевищує його і є

двічі щасливим, що гарантує перемогу Степана.

Формат вхідних даних: У єдиному рядку міститься єдине ціле число – N (1 ≤ N ≤ 10100000) – число назване Марисею.

Формат вихідних даних: Виведіть найменше число, яке може назвати Степан.

Приклади Input Output

10 11

ACM-ICPC Ukraine 2014, Перший етап Україна, 26 квітня 2014 року

M. Число Степан вирішив освідчитись Марисі в кохані. Оскільки він досить сором'язливий, то вирішив зробити це досить

оригінально, а саме зашифрувати послання у вигляді великого числа на довгій смужці паперу. Написавши послання, він

залишив його в кімнаті (все одно ніхто крім нього і Марисі не зрозуміє, про що йде мова) і задоволений побіг за конвертом. Але

тільки він вийшов, як до кімнати прийшов його одногрупник і розрізав смужку паперу на декілька частин. У результаті на кожній

частині виявилась одна цифра, або декілька цифр, що йдуть підряд.

Повернувшись до кімнати і побачивши, що трапилось, Степан зовсім розгубився - він не може згадати, яке саме число

він написав. Тільки пам'ятає, що воно було дуже велике. Допоможіть йому з'ясувати, яке максимальне число могло бути

написано на смужці паперу перед розрізанням.

Формат вхідних даних: у першому рядку записано натуральне число N (1 ≤ N ≤ 100) – кількість рядків. Далі йдуть рядки, кожен з яких містить

послідовність від 1 до 100 цифр. Гарантується, що хоча б в одному рядку перша цифра відмінна від нуля.

Формат вихідних даних: виведіть один рядок – максимальне число, яке могло бути написане на смужці перед розрізанням.

Приклади Input Output

4 220 004 6 6

66220004

1 3

3