Так давайте наконец(я уже такое предлагал) выясним сколько вам памяти требуется для одного шага!
У Вас в каждом шаге две переменные, первая: выбор из четырёх вариантов(пропуск, вода, химия_1 и химия_2) займёт два бита и вторая переменная уставка времени - Вы так и не удосужились написать требуемый Вам диапазон и минимальную ступеньку изменения! Приведу пример по аналогии со школьными звонками(ранее и такое делал), так вот там минимальная ступенька изменения - 5 минут, так как звонки происходят только при минутах кратными пяти, этим сразу достигается уменьшение диапазона уставок в пять раз, по сравнению с минимальной ступенькой в минуту! И разумеется памяти для хранения меньшего диапазона требуется меньше, если требуется её рациональное использование, когда её не хватает.
И ещё, надеюсь, Вы внимательно смотрели мои проекты, там введённые настройки "подтягиваются" на экран, что удобно при редактировании и можно просто просмотреть установленные настройки, если возникли какие сомнения в их правильности! Короче, это требует сохранения промежуточных(оперативных) переменных, которые мы можем использовать и для предварительного набора уставок для одной ячейки памяти, надеюсь, смысл понятен и можно посмотреть как это у меня выполнено!