Пара тестов Есть наверно несколько решений этой задачи. Я использовал стек пар. first это было верхняя грань пары, second нижняя. Как только я считал число, я посмотрел на первый элемент в стеке на его верхнюю грань, если она совпадала, то я понижал грань на -1, если в стеке еще и грани местами менялись то есть first<second, то удалял элемент. Если же элемент который я считал был меньше чем верхняя грань первого элемента в стеке, то выводил фразу читер!!!! Если стек оказывался пустым или элмент считывания оказывался больше чем верхняя грань первого элемента, то создавал новую пару и ее грани first присваивал считанное значение, а second присваивал значение h. h это число которое в начале было равно 1 а после добавления нового элемента в стек становилось считанное число +1. Оно менялось у меня только когда добавлял что-то. Потом проверял если новый элемент стека верхняя и нижняя грань совпадает то удалял его, иначе понижал нверхнюю границу на -1. Если в конце чтения стек становился пустым, то значит выводим фразу Not a proof. К сожалению нельзя кидать код программ... Но могу поделиться парой тестов: 5 3 2 5 4 1 Not a proof 5 3 5 2 4 1 Cheater 4 3 4 1 2 Cheater Re: Пара тестов Да это адская задача, я уже решаю года полтора безуспешно Решение не пытаюсь посмотреть принципиально Ничего не помогает решить Re: Пара тестов Ничего тут сложного нет, просто симулируем сам процесс закатывания. Разберём например тест 10 5 8 7 6 4 10 2 1 3 9. Пускай мы встретили во входе 5, значит докидываем в массив 1 2 3 4 5. Затем процесс удаления: сравниваем 5 из входа с последним элементом, они равны, значит становится 1 2 3 4. Потом встретили 8, оно больше нашего последнего закинутого шара, докидываем 6 7 8, получаем 1 2 3 4 6 7 8. И повторяем процесс удаления, описанный выше. Потом допустим 7, 6, 4, и каждый раз число из входа совпадает с последним элементом массива. Поудаляли, получили 1 2 3. Потом получаем 10, оно больше последнего закинутого шара, докидываем в массив, получаем 1 2 3 9 10 (и сразу же удаляем, получаем 1 2 3 9). Потом получаем 2, но последний элемент 9, а не 2, и тут мы понимаем, что ответ Cheater. Re: Пара тестов Ну я не смотрю решений. Сам додуматься не могу. Я хочу как-нибудь ссимулировать. Не могу придумать, как это сделать. Лучше скажите мне, что решить, какие задачи, которые бы меня подготовили к решению этой. Re: Пара тестов Да тот же 1220 stacks, который вы недавно пытались решать. Разница лишь в следующем: — там много стаков, а тут один — тут только pop-запросы — pop-запрос, который больше всех предыдущих, автоматически означает, что перед ним надо допушить недостающие шары. Re: Пара тестов Ну я сделал двусвязный список в статическом массиве И проверял всегда ли верно Что я беру либо непосредственно следующий шар из оставшихся Либо любой шар выше Re: Пара тестов Поздравляю с AC :) P. S. Двусвязный список, кстати, не обязателен, я делал просто массив, и у меня была переменная для текущего размера массива, и если удаляем элемент, то я просто её уменьшал, а если добавляем, то увеличивал и менял элемент на новый. Edited by author 19.07.2017 12:11 |