문자열 확인
시간 제한2초메모리 제한1024 MB
a와 b로 이루어진 문자열 s와 copy, swap, roll, fuse 명령 목록이 주어질 때, 명령 실행 중 CRASH가 발생하는지 확인하고 발생하지 않으면 최종 맨 위 문자열이 s와 같은지 판별합니다.
문제
가상 기계는 문제 B에 나오는 것과 같다고 하자.
문자열 와 이 기계에서 실행할 명령 개로 이루어진 프로그램이 주어진다. 각 명령은 copy, swap, roll, fuse 중 하나이다. 처음 기계의 스택에는 두 문자열이 "a b" 형태로 들어 있다. 명령 목록을 순서대로 모두 실행한다.
모든 명령이 올바르게 실행되었는지, 아니면 어떤 명령을 실행하다 CRASH 사건이 발생했는지 판단한다. 모든 명령이 올바르게 실행되었다면, 명령을 모두 실행한 뒤 스택 끝에 남은 문자열이 와 같은지도 판단한다.
입력
첫 줄에 문자열 가 주어진다. 는 소문자 라틴 문자 a와 b로만 이루어지며, 길이는 1 이상 이하이다.
둘째 줄에 정수 ()이 주어진다. 다음 개 줄에 실행 순서대로 명령이 한 줄에 하나씩 주어진다. 각 명령은 copy, swap, roll, fuse 중 하나이다.
출력
다음 중 정확히 하나만 출력한다.
CRASH: 프로그램을 실행하는 중CRASH사건이 발생한 경우YES: 모든 명령을 실행한 뒤 스택 끝의 문자열이 와 같은 경우NO: 모든 명령을 실행한 뒤 스택 끝의 문자열이 와 다른 경우