You are on page 1of 13

All-Ukrainian Collegiate Programming Contest

I stage
18 вересня, 2021

Задача A. Дiлення нацiло на 5


Лiмiт часу: 1 second
Лiмiт використання пам’ятi: 256 megabytes
На столi лежить n камiнцiв. За 1 монету ви можете зробити одну з наступних операцiй:

• Забрати зi столу один камiнець. Ви не можете виконати цю операцiю, якщо на столi


нема жодного камiнця.

• Покласти на стiл ще один камiнець.

Яку найменшу кiлькiсть монет треба витратити, щоб число камiнцiв на столi почало дiлитись
нацiло на 5?
Звернiть увагу, що 0 дiлиться на будь-яке число, а отже, якщо на столi лишається 0 камiнцiв, то
умова задачi виконана.
Формат вхiдних даних
Єдиний рядок мiстить єдине цiле число n (0 6 n 6 109 ) — початкова кiлькiсть камiнцiв на столi.
Формат вихiдних даних
Виведiть єдине число — мiнiмальну кiлькiсть монет яку треба витратити, щоб число камiнцiв на
столi почало дiлитись нацiло на 5.
Приклади
standard input standard output
0 0
1 1
3 2
228 2
300 0
2021 1

Зауваження
В першому прикладi на столi спочатку лежить 0 камiнцiв. 0 дiлиться на 5, тому не потрiбно
витрачати жодної монети.
В другому прикладi можна заплатити одну монету i забрати один камiнець зi столу. Тодi на
столi опиниться 0 камiнцiв, а 0 дiлиться на 5.
В третьому прикладi можна заплатити одну монету i покласти ще один камiнець на стiл (таким
чином, на столi буде 4 камiнцi), а потiм заплатити ще одну монету i покласти ще один камiнець на
стiл, отримуючи таким чином 5 камiнцiв, що дiлиться на 5.

1
All-Ukrainian Collegiate Programming Contest
I stage
18 вересня, 2021

Задача B. Медiанне божевiлля


Лiмiт часу: 3 seconds
Лiмiт використання пам’ятi: 256 megabytes
Це iнтерактивна задача.
Загадана деяка перестановка p чисел вiд 1 до n, де n парне. Ви можете задавати запити наступ-
ного вигляду:

• Для даного набору рiзних iндексiв непарної довжини a1 , a2 , . . . , al , ви можете дiзнатись таке
число x, що px є медiаною елементiв pa1 , pa2 , . . . , pal .

Вiдомо, що p1 < pn . Вгадайте перестановку p за не бiльше нiж 3n 2 запитiв.


Гарантується, що перестановка зафiксована перед початком взаємодiї. Iншими словами, iнтер-
актор не адаптивний.
Нагадаємо, що медiана непарної кiлькостi чисел визначається наступним чином:
Нехай b1 , b2 , . . . , b2k+1 — це цi числа в порядку зростання (де 2k + 1 — кiлькiсть чисел). Тодi
медiаною є число bk+1 .
Протокол взаємодiї
Почнiть взаємодiю, зчитавши одне цiле число n (2 6 n 6 1000, n парне) — довжину перестановки.
Щоб задати питання, необхiдно вивести в одному рядку спочатку символ «?», потiм цiле число
l, а потiм l цiлих чисел ai (1 6 l 6 n, 1 6 ai 6 n, l непарне, всi ai попарно рiзнi) — iндекси, для яких
необхiдно знайти медiану.
У вiдповiдь програма журi виведе таке число x, що px є медiаною елементiв pa1 , pa2 , . . . , pal .
Коли ви визначили перестановку, то виведiть спочатку символ «!», а потiм n чисел p1 , p2 , . . . , pn .
Пiсля цього ваша програма має завершити роботу.
Пiсля кожного запиту i виводу вiдповiдi не забудьте вивести перехiд рядка i скинути буфер
виводу. Для скидання буферу використовуйте:

• fflush(stdout) чи cout.flush() в C++;

• System.out.flush() в Java;

• flush(output) в Pascal;

• stdout.flush() в Python;

Приклад
standard input standard output
4 ? 3 2 3 4
2 ? 3 1 3 4
3 ? 3 1 2 4
2 ? 3 1 2 3
3 ! 1 3 2 4

Зауваження
В прикладi загадана перестановка p =(1, 3, 2, 4).
Перший запит в прикладi — хочемо дiзнатись медiану елементiв p2 , p3 , p4 , що дорiвнюють 3, 2, 4
вiдповiдно. Медiана цих чисел — 3, тобто p2 , тому iнтерактор вiдповiдає числом 2.

2
All-Ukrainian Collegiate Programming Contest
I stage
18 вересня, 2021

Другий запит в прикладi — хочемо дiзнатись медiану елементiв p1 , p3 , p4 , що дорiвнюють 1, 2, 4


вiдповiдно. Медiана цих чисел — 2, тобто p3 , тому iнтерактор вiдповiдає числом 3.
Третiй запит в прикладi — хочемо дiзнатись медiану елементiв p1 , p2 , p4 , що дорiвнюють 1, 3, 4
вiдповiдно. Медiана цих чисел — 3, тобто p2 , тому iнтерактор вiдповiдає числом 2.
Четвертий запит в прикладi — хочемо дiзнатись медiану елементiв p1 , p2 , p3 , що дорiвнюють
1, 3, 2 вiдповiдно. Медiана цих чисел — 2, тобто p3 , тому iнтерактор вiдповiдає числом 3.

3
All-Ukrainian Collegiate Programming Contest
I stage
18 вересня, 2021

Задача C. Абсолютно неадекватнi операцiї


Лiмiт часу: 1 second
Лiмiт використання пам’ятi: 256 megabytes

Дано масив з n цiлих чисел [a1 , a2 , . . . , an ]. За одну операцiю можна зробити наступне:

• Вибрати деяке i, для якого 2 6 i 6 n − 1.

• Нехай ai = x. Тодi ми додаємо x до ai−1 та ai+1 , а ai замiнюємо на −x.

Наприклад, якщо масив мав вигляд [1, 2, −1, 3], то ми можемо обрати i = 3, виконати операцiю,
i отримати масив [1, 1, 1, 2].
Ви можете застосовувати дану операцiю до масиву довiльну кiлькiсть разiв. Скiльки рiзних
масивiв ви можете отримати? Якщо ви можете отримати нескiнченну кiлькiсть масивiв, виведiть
−1, iнакше виведiть число цих масивiв за модулем 109 + 7.
Два масиви вважаються рiзними, якщо вони вiдрiзняються принаймнi в однiй позицiї.
Формат вхiдних даних
Перший рядок вхiдних даних мiстить єдине цiле число n (3 6 n 6 105 ) — довжину масиву.
Другий рядок мiстить n цiлих чисел a1 , a2 , . . . , an (−109 6 ai 6 109 ) — елементи масиву.
Формат вихiдних даних
Якщо ви можете отримати нескiнченну кiлькiсть масивiв, виведiть −1, iнакше виведiть число
цих масивiв за модулем 109 + 7.
Приклади
standard input standard output
3 2
18 9 2021
5 1
0 0 0 0 0
6 10
1 -1 1 -1 1 -1

Зауваження
В першому прикладi, ми можемо застосувати операцiю лише для i = 2, що дає два рiзнi масиви:
[18, 9, 2021] та [27, −9, 2030].
В другому прикладi, яку б операцiю ми не застосували, масив лишатиметься рiвним [0, 0, 0, 0, 0].

4
All-Ukrainian Collegiate Programming Contest
I stage
18 вересня, 2021

Задача D. Палiндромна лихоманка


Лiмiт часу: 1 second
Лiмiт використання пам’ятi: 256 megabytes
Вам дано рядок s з латинських маленьких лiтер. Знайдiть довiльний рядок t з латинських ма-
леньких лiтер довжини не бiльше 2 · 105 , для якого:

• Рядок s + t є палiндромом.

• Рядок t + s є палiндромом.

Можна показати, що при обмеженнях даної задачi такий рядок завжди знайдеться.
Нагадаємо, що палiндром — це рядок, що злiва направо читається так само як справа налiво.
Наприклад, abcba є палiндромом, а oppagangnamstyle нi.
Нагадаємо, що позначення s + t позначає конкатенацiю рядкiв s та t. Наприклад, energynot +
over = energynotover.
Формат вхiдних даних
Єдиний рядок вхiдних даних мiстить рядок s з латинських маленьких лiтер довжини не бiльше
105 .
Формат вихiдних даних
Виведiть довiльний непустий рядок t з латинських маленьких лiтер довжини не бiльше 2 · 105 ,
що задовольняє умовам задачi.
Звернiть увагу, що t не може бути пустим, навiть якщо пустий рядок задовольняє
умовi задачi.
Приклади
standard input standard output
abbaabba abba
zyzz zzyz

Зауваження
В першому прикладi, s + t = t + s = abbaabbaabba, що є палiндромом.
В другому прикладi, s + t = zyzzzzyz, а t + s = zzyzzyzz. Обидва слова є палiндромами.

5
All-Ukrainian Collegiate Programming Contest
I stage
18 вересня, 2021

Задача E. Шлях додому


Лiмiт часу: 8 seconds
Лiмiт використання пам’ятi: 256 megabytes
n мiст розташованi на прямiй в порядку 1, 2, . . . , n, вiдстань мiж мiстами i та i + 1 рiвна Di для
кожного i вiд 1 до n − 1.
Вам потрiбно порахувати кiлькiсть маршрутiв, для яких виконуються наступнi умови:

• В маршрутi рiвно k мiст

• Всi мiста в маршрутi попарно рiзнi

• Сумарна довжина маршруту дiлиться на m.

Сумарна довжина маршруту дорiвнює сумi вiдстаней мiж мiстами, що йдуть в маршрутi пiдряд.
Вiдстань мiж мiстами i, j визначається за такою формулою:

• Di + . . . + Dj−1 , якщо i < j.

• Dj + . . . + Di−1 , якщо j < i.

Наприклад, якщо n = 4 i D = [3, 5, 7], то довжина маршруту [3, 1, 4] дорiвнює 8 + 15 = 23.


Виведiть кiлькiсть маршрутiв за модулем 109 + 7.
Формат вхiдних даних
У першому рядку мiстяться три цiлi числа n, m, k(2 6 n 6 80, 1 6 m 6 80, 2 6 k 6 n) —
кiлькiсть мiст на прямiй, число, на яке повинна дiлитися сумарна довжина маршруту, i кiлькiсть
мiст в маршрутi.
У наступному рядку мiстяться n − 1 цiлих чисел D1 , D2 , . . . , Dn−1 (1 6 Di 6 m) — вiдстанi мiж
сусiднiми мiстами.
Формат вихiдних даних
Виведiть кiлькiсть маршрутiв за модулем 109 + 7.
Приклади
standard input standard output
4 5 3 4
1 2 3
15 17 6 210690
1 2 3 4 5 6 7 8 9 10 11 12 13 14

Зауваження
В першому прикладi iснує 4 такi маршрути:

• 2 → 3 → 4 : довжина рiвна 2 + 3 = 5.

• 4 → 3 → 2 : довжина рiвна 3 + 2 = 5.

• 1 → 3 → 2 : довжина рiвна (1 + 2) + 2 = 5.

• 2 → 3 → 1 : довжина рiвна 2 + (1 + 2) = 5.

6
All-Ukrainian Collegiate Programming Contest
I stage
18 вересня, 2021

Задача F. ПерестановочкА
Лiмiт часу: 1 second
Лiмiт використання пам’ятi: 256 megabytes

Для перестановки p чисел вiд 1 до n, визначимо f (p) наступним чином: для кожної пари чи-
сел (i, j) з 1 6 i 6 j 6 n, порахуємо пару (min, max), де min — найменше число серед чисел
ai , ai+1 , . . . , aj , а max — найбiльше з них. Тодi f (p) рiвна кiлькостi рiзних пар серед всiх n(n+1)
2 пар.
Наприклад розглянемо перестановку (1, 3, 2).

• Для пари (1, 1), (min, max) = (1, 1)

• Для пари (1, 2), (min, max) = (1, 3)

• Для пари (1, 3), (min, max) = (1, 3)

• Для пари (2, 2), (min, max) = (3, 3)

• Для пари (2, 3), (min, max) = (2, 3)

• Для пари (3, 3), (min, max) = (2, 2)

Всього 5 рiзних пар, тому f ((1, 3, 2)) = 5.


Знайдiть f (p) для даної вам перестановки (p1 , p2 , . . . , pn ).
Формат вхiдних даних
Перший рядок вхiдних даних мiстить єдине число n (1 6 n 6 2 · 105 ).
Другий рядок вхiдних даних мiстить n цiлих чисел p1 , p2 , . . . , pn (1 6 pi 6 n, pi попарно рiзнi)
— перестановку довжини n.
Формат вихiдних даних
Виведiть f (p).
Приклади
standard input standard output
3 5
1 3 2
8 36
1 2 3 4 5 6 7 8
8 15
1 8 2 7 3 6 4 5

Зауваження
Перший приклад розiбрано в умовi.

7
All-Ukrainian Collegiate Programming Contest
I stage
18 вересня, 2021

Задача G. ПерестановочкИ
Лiмiт часу: 1 second
Лiмiт використання пам’ятi: 256 megabytes

Для перестановки p чисел вiд 1 до n, визначимо f (p) наступним чином: для кожної пари чи-
сел (i, j) з 1 6 i 6 j 6 n, порахуємо пару (min, max), де min — найменше число серед чисел
ai , ai+1 , . . . , aj , а max — найбiльше з них. Тодi f (p) рiвна кiлькостi рiзних пар серед всiх n(n+1)
2 пар.
Наприклад розглянемо перестановку (1, 3, 2).

• Для пари (1, 1), (min, max) = (1, 1)

• Для пари (1, 2), (min, max) = (1, 3)

• Для пари (1, 3), (min, max) = (1, 3)

• Для пари (2, 2), (min, max) = (3, 3)

• Для пари (2, 3), (min, max) = (2, 3)

• Для пари (3, 3), (min, max) = (2, 2)

Всього 5 рiзних пар, тому f ((1, 3, 2)) = 5.


Знайдiть суму f (p) по всiм перестановкам p довжини n, за модулем 109 + 7.
Формат вхiдних даних
Єдиний рядок вхiдних даних мiстить єдине число n (1 6 n 6 2 · 105 ).
Формат вихiдних даних
Виведiть суму f (p) по всiм перестановкам p довжини n, за модулем 109 + 7.
Приклади
standard input standard output
1 1
2 6
3 32
228 384127128

8
All-Ukrainian Collegiate Programming Contest
I stage
18 вересня, 2021

Задача H. Вишуканий максимум


Лiмiт часу: 1 second
Лiмiт використання пам’ятi: 256 megabytes
Дано n попарно рiзних чисел a1 , a2 , . . . , an . Знайдiть максимальне можливе значення виразу
ai aj
по 1 6 i < j 6 n.
|ai −aj |

Формат вхiдних даних


Перший рядок мiстить єдине цiле число n (2 6 n 6 2 · 105 ) — кiлькiсть чисел.
Другий рядок мiстить n попарно рiзних цiлих чисел a1 , a2 , . . . , an (1 6 ai 6 109 ).
Формат вихiдних даних
i j aa
Виведiть єдине число — максимальне можливе значення виразу |ai −a j|
по 1 6 i < j 6 n.
Ваш вiдповiдь буде вважатися правильною, якщо її абсолютна або вiдносна помилка не переви-
щує 10−6 .
Формально, нехай ваш вiдповiдь дорiвнює a, а вiдповiдь журi дорiвнює b. Ваша вiдповiдь буде
|a−b| −6
зарахована, якщо i тiльки якщо max (1,|b|) 6 10 .

Приклад
standard input standard output
3 23.3333333333
10 3 7

Зауваження
3·7 3·10 7·10
В прикладi, 4 = 5.25, 7 = 4.2857 . . ., 3 = 23.3333 . . ..

9
All-Ukrainian Collegiate Programming Contest
I stage
18 вересня, 2021

Задача I. Надзвичайно оригiнальна задача про


кiстякове дерево
Лiмiт часу: 3 seconds
Лiмiт використання пам’ятi: 256 megabytes
В Українi n мiст i 0 дорiг. До 30-ої рiчницi незалежностi пора б це виправити.
Ви хочете побудувати n − 1 дорогу мiж мiстами таким чином, щоб ними з кожного мiста мож-
на було дiстатись до будь-якого iншого. Вартiсть прокладання дороги мiж мiстами i та j рiвна
(ai + aj ) mod M мiльйонiв гривень з бюджетних коштiв, де M — улюблене число чинного Президен-
та України.
Яку найменшу кiлькiсть мiльйонiв гривень з бюджетних коштiв потрiбно витратити для вико-
нання цього плану?
Формат вхiдних даних
Перший рядок мiстить два цiлих числа n, M (1 6 n 6 200000, 1 6 M 6 109 ) — число мiст та
улюблене число чинного Президента України вiдповiдно.
Другий рядок мiстить n цiлих чисел a1 , a2 , . . . , an (0 6 ai < M ).
Формат вихiдних даних
Виведiть найменшу кiлькiсть мiльйонiв гривень з бюджетних коштiв, якi потрiбно витратити,
щоб побудувати n − 1 дорогу, щоб ними з кожного мiста можна було дiстатись до будь-якого iншого.
Приклади
standard input standard output
3 350 130
42 69 300
12 12 14
3 7 5 2 9 7 6 7 8 7 2 1
6 11 17
3 2 2 2 2 8
1 998244353 0
7788

Зауваження
В першому прикладi ми можемо прокласти 3 дороги з наступними вартостями:

• Мiж мiстами 1, 2: (42 + 69) mod 350 = 111

• Мiж мiстами 1, 3: (42 + 300) mod 350 = 342

• Мiж мiстами 2, 3: (69 + 300) mod 350 = 19

Найвигiднiше обрати дороги (1, 2) та (2, 3), з сумарною вартiстю 111 + 19 = 130.

10
All-Ukrainian Collegiate Programming Contest
I stage
18 вересня, 2021

Задача J. Коли немає чим зайнятись, а вдома лише


перестановка
Лiмiт часу: 2 seconds
Лiмiт використання пам’ятi: 256 megabytes

Дана перестановка (p1 , p2 , . . . , pn ) чисел вiд 1 до n.


З нею ви можете робити наступну операцiю:

• Ви можете переставити мiсцями два сусiднi елементи p. Ця операцiя займає рiвно одну се-
кунду.

За одну iтерацiю ви робите наступне:

• Розглянемо перестановку (q1 , q2 , . . . , qn ), що знаходиться прямо перед (p1 , p2 , . . . , pn ) в лек-


сикографiчному порядку, тобто q лексикографiчно менша за p i не iснує жодної перестановки
"мiж ними". Наприклад, для p = (2, 3, 1) q = (2, 1, 3), для p = (3, 1, 2, 4) q = (2, 4, 3, 1), а для
p = (1, 4, 2, 3) q = (1, 3, 4, 2).

• Перетворимо перестановку p в перестановку q, за мiнiмально можливу кiлькiсть опе-


рацiй. Наприклад, щоб перетворити (1, 4, 2, 3) в (1, 3, 4, 2), потрiбно мiнiмум 2 операцiї:
(1, 4, 2, 3) → (1, 4, 3, 2) → (1, 3, 4, 2).

Ви застосовуєте до отриманої перестановки p дану iтерацiю, поки вона не стане тотожною пере-
становкою (тобто рiвною (1, 2, 3, . . . , n)). Скiльки часу це займе? Оскiльки це число може бути дуже
великим, виведiть його за модулем 109 + 7.
Перестановка p вважається лексикографiчно меншою за перестановку q, якщо iснує такий iндекс
i, що pj = qj для всiх j < i, а також pi < qi .
Формат вхiдних даних
Перший рядок мiстить єдине число n (1 6 n 6 2 · 105 )— довжину перестановки.
Другий рядок мiстить n цiлих чисел p1 , p2 , . . . , pn (1 6 pi 6 n, всi числа попарно рiзнi) — елементи
перестановки.
Формат вихiдних даних
Виведiть кiлькiсть секунд, яка пройде, поки процес не завершиться, за модулем 109 + 7.
Приклади
standard input standard output
4 6
1 4 2 3
6 1423
6 5 4 3 2 1

Зауваження
В першому прикладi маємо:
(1, 4, 2, 3) → (1, 4, 3, 2) → (1, 3, 4, 2): 2 секунди.
(1, 3, 4, 2) → (1, 3, 2, 4): 1 секунда.
(1, 3, 2, 4) → (1, 2, 3, 4) → (1, 2, 4, 3): 2 секунди.
(1, 2, 4, 3) → (1, 2, 3, 4): 1 секунда.
Всього 6 секунд.

11
All-Ukrainian Collegiate Programming Contest
I stage
18 вересня, 2021

Задача K. Чергове розчарування: задача на парування


Лiмiт часу: 1 second
Лiмiт використання пам’ятi: 256 megabytes

Дано непарне число n. Для масиву з n чисел [a1 , a2 , . . . , an ], будемо визначати його вартiсть, як
максимальну вагу досконалого парування в графi на n + 1 вершинах, в якому вага ребра (i, j) для
i < j визначається як max(ai , ai+1 , . . . , aj−1 ).
Наприклад, для масиву [1, 30, 15], ми маємо граф на 4 вершинах з наступними вiдстанями мiж
ними:

• d(1, 2) = 1

• d(1, 3) = d(1, 4) = d(2, 3) = d(2, 4) = 30

• d(3, 4) = 15

Тут парування ((1, 2), (3, 4)) має 16, а ((1, 3), (2, 4)) i ((1, 4), (2, 3)) мають ваги 60, тому вартiсть
всього масиву рiвна 60.
Вам дано масив b довжини n з попарно рiзних елементiв. Знайдiть суму вартостей всiх пере-
становок цього масиву, за модулем 109 + 7.
Нагадаємо, що досконале парування в зваженому графi на 2k вершинах — це набiр з k ребер
такий, що кожна вершина є кiнцем рiвно одного ребра. Вагою досконалого парування вважається
сума ваг всiх вибраних k ребер.
Формат вхiдних даних
Перший рядок мiстить єдине цiле число n (1 6 n 6 99 999, n непарне) — довжину масиву.
Другий рядок мiстить n попарно рiзних цiлих чисел b1 , b2 , . . . , bn (1 6 bi 6 108 ) — елементи
масиву.
Формат вихiдних даних
Виведiть суму вартостей всiх перестановок цього масиву, за модулем 109 + 7.
Приклади
standard input standard output
1 300
300
3 300
1 30 15
5 605448
42 69 228 1488 2021

Зауваження
В прикладi:

• Вартостi масивiв [1, 30, 15] та [15, 30, 1] рiвнi 60.

• Вартостi масивiв [1, 15, 30], [30, 15, 1], [15, 1, 30], [30, 1, 15] рiвнi 45.

Сума по всiм перестановкам рiвна 60 · 2 + 45 · 4 = 300.

12
All-Ukrainian Collegiate Programming Contest
I stage
18 вересня, 2021

Задача L. Задача на кореневу декомпозицiю з


великими обмеженнями
Лiмiт часу: 4 seconds
Лiмiт використання пам’ятi: 1024 megabytes
Дано натуральне число n. Знайдiть, скiльки серед чисел n mod 1, n mod 2, . . ., n mod n рiзних
чисел.
Формат вхiдних даних
Перший i єдиний рядок мiстить одне цiле число n (1 6 n 6 1012 ).
Формат вихiдних даних
Виведiть єдине число — кiлькiсть рiзних чисел серед n mod 1, n mod 2, . . ., n mod n.
Приклади
standard input standard output
1 1
2 1
3 2

Зауваження
В першому прикладi, ми розглядаємо всього одне число: 1 mod 1 = 0, тому вiдповiдь 1.
В другому прикладi, маємо 2 mod 1 = 2 mod 2 = 0, тому вiдповiдь знову 1.
В третьому прикладi, маємо 3 mod 1 = 3 mod 3 = 0, а також 3 mod 2 = 1, всього два рiзнi числа.

13

You might also like