Flip of Time
Пісочний годинник задано у вигляді масиву кортежу (upper, lower) для кількості хвилин піску, які наразі зберігаються у верхній та нижній камерах пісочного годинника, причому обидві камери достатньо великі, щоб вмістити весь пісок у цьому годиннику. Отже, після m хвилин часу, що минули, стан цього пісочного годинника буде upper - min(upper, m), lower + min(upper, m). Загальна кількість піску всередині пісочного годинника ніколи не змінюється, і жодна з камер ніколи не міститиме від'ємного антипіску.
За заданим списком glasses, ваша задача полягає у тому, щоб знайти оптимальну послідовність ходів, яка дозволить виміряти рівно t хвилин, що рахується як кількість окремих перевертань пісочного годинника, виконаних на цьому шляху. Кожен хід складається з двох етапів:
- спочатку потрібно дочекатись, поки у верхній камері пісочного годинника закінчиться найменша ненульова кількість m піску, що знаходиться на даний момент у верхній камері.
- коли це станеться, виберіть довільну підмножину glasses і миттєво переверніть цю підмножину.
Подивіться приклад для випадку [(7, 0), (11, 0)], 15 випадку. Ви можете знайти пояснення для дещо зміненого прикладу у Popular Mechanics article.
На першому етапі у вас немає іншого вибору, окрім як чекати, але на другому етапі ви насолоджуєтесь соромом багатства...