Держать строй
시간 제한2초메모리 제한1024 MB
배열의 한 원소를 바꾸는 갱신을 처리하며 매 질의마다 배열 전체가 비내림차순인지 판별한다.
문제
Ник Фьюри решил, что бойцы отряда спецназа, являющегося подразделением организации S.H.I.E.L.D., помогут мстителям отразить атаку войска Локи. Он решил, что в бой отправятся бойцов, а все остальные понадобятся в других местах. Теперь ему осталось только выбрать, какие именно бойцы пойдут в атаку.
Сначала Ник выбрал бойцов случайным образом и выстроил их в линию, а затем стал по одному заменять кого-то из уже выбранных бойцов на другого солдата, который в настоящее время в строю не стоит. Поскольку отряд достаточно большой, Ник не знает каждого бойца лично. Оценить боеспособность отряда он может разве что по каким-нибудь заметным внешним признакам. Важным показателем боеспособности отряда является, например, то, стоят ли солдаты в строю по неубыванию роста.
Так, Ник может давать команды двух видов. Первая команда заключается в том, что новый солдат роста встает в строй вместо солдата, стоящего на -ом месте. Подавая вторую команду, он хочет узнать, стоят ли солдаты в строю по неубыванию роста. Ваша задача обрабатывать эти команды и сообщать в ответ на запросы то, что хочет узнать Ник.
입력
Первая строка входного файла содержит два числа и (, ) --- количество солдат в строю и количество команд, которые подаст Ник. Вторая строка содержит целых неотрицательных чисел, не превосходящих --- исходный рост солдат в строю.
Следующие строк содержат команды, подаваемые Ником. Если первый символ в строке, описывающей очередную команду, '!', то за ним следуют два числа и (, ), где --- место в строю того солдата, которого должен заменить солдат роста . Команда второго типа описывается знаком '?'.
출력
Для каждой команды второго типа в отдельной строке выведите <<YES>>, если в данный момент солдаты в строю стоят по неубыванию роста, и <<NO>> --- в противном случае.