Як учасник Міжнародної ліги стрибання камінців, ви щотижня подорожуєте до нового озера та змагаєтеся у конкурсі зі стрибання камінців. Мета — підкинути камінець так, щоб він зробив якомога більше стрибків; точні правила визначення переможця наведені нижче. Щоб зробити змагання цікавішими, організатори IRSL часто обирають озера з колодами, піщаними мілинами та іншими перешкодами. Вам надано "карту" озера в профіль на рівні води, як показано у верхньому рядку прикладу нижче. (Числа під картою — лише для довідки.) Крапка (".") позначає чисту воду, де камінець може підскочити; будь-який інший символ означає певну перешкоду, яка зупинить камінець.
...=...**..#...@....:.:.:..=.. ______________________________ 11111111112222222222 012345678901234567890123456789 \Ви стоїте на лівому краю озера. Ви можете підкинути камінець так, щоб він приземлився в будь-якій позиції на озері, а потім стрибав з фіксованим інтервалом. Таким чином, кидок визначається як пара , де i \geq 0 — початкова позиція приземлення, а d > 0 — відстань між стрибками. Зауважте, що має бути додатнім. Величина кидка — це кількість разів, коли камінець підскакував по воді. Довжина — це позиція останнього контакту з водою або перешкодою. Щоб порівняти два різних кидки, використовуйте такі критерії по черзі, доки не визначиться переможець: кількість стрибків (більше — краще); довжина (більше — краще); початкова позиція (більше — краще); інтервал між стрибками (менше — краще).
Для зазначеної вище карти кидок потрапляє у перешкоду на позиції ; його кількість стрибків — , довжина — . Кидок стрибає на позиціях , , та , а потім натрапляє на перешкоду на позиції ; він має кількість стрибків і довжину , тож перемагає кидок . Кидок стрибає на позиціях , , та , а потім вилітає за межі озера; кількість стрибків — , довжина — , тож він перемагає кидок . Кидок стрибає на позиціях , , , , , , та , а потім вилітає за межі озера; кількість стрибків — , довжина — , і це найкращий можливий кидок для цього озера.
Приклад 1