대열 유지
면접 대비시간 제한2초메모리 제한1024 MB
한 위치의 키를 새 값으로 바꾸는 갱신을 처리하고, 질의마다 줄 전체가 비내림차순인지 확인합니다.
문제
닉 퓨리는 S.H.I.E.L.D. 특수부대 병사들이 어벤져스를 도와 로키 군대의 공격을 막으리라고 판단했다. 공격에 보낼 병사는 명이고, 나머지 병사는 다른 곳에서 필요하다. 이제 공격에 나설 병사를 고르기만 하면 된다.
닉은 먼저 병사 명을 무작위로 골라 한 줄로 세웠다. 그 뒤 선택된 병사 한 명을 지금 대열에 없는 다른 병사로 하나씩 바꿔 나갔다. 부대가 커서 닉은 병사 한 명 한 명을 알지 못한다. 그는 부대의 전투력을 눈에 띄는 외형 특징으로만 가늠할 수 있다. 중요한 기준 중 하나는 대열의 병사들이 키의 비내림차순으로 서 있는지 여부다.
닉은 두 종류의 명령을 내릴 수 있다. 첫 번째 명령은 키가 인 새 병사가 번째 자리에 서 있던 병사를 대신해 대열에 서는 것이다. 두 번째 명령으로는 대열의 병사들이 키의 비내림차순으로 서 있는지 묻는다. 이 명령들을 처리하여 질의에 답하라.
입력
첫 줄에 두 정수 과 이 주어진다 (, ). 각각 대열에 선 병사 수와 닉이 내릴 명령의 수다. 둘째 줄에는 병사들의 초기 키를 나타내는 개의 음이 아닌 정수가 주어지며, 모두 를 넘지 않는다.
다음 개의 줄에는 명령이 한 줄에 하나씩 주어진다. 줄의 첫 문자가 !이면 두 정수 와 가 뒤따른다 (, ). 이때 키 인 병사가 번째 자리의 병사를 대신한다. 첫 문자가 ?이면 두 번째 종류의 명령이다.
출력
두 번째 종류의 명령마다, 현재 대열의 병사들이 키의 비내림차순으로 서 있으면 <<YES>>, 그렇지 않으면 <<NO>>를 한 줄에 하나씩 출력한다.