Long Long Strings
시간 제한1초메모리 제한512 MB
충분히 긴 문자열에 두 삽입·삭제 연산 열을 적용했을 때 결과가 항상 같은지 판정한다.
문제
긴 DNA 서열을 저장하려고 어떤 회사가 문자 100억 개가 넘는 문자열도 담는 LongLongString 클래스를 만들었다. 이 클래스가 지원하는 연산은 두 가지다.
Ins(p, c): 위치 에 문자 를 넣는다.Del(p): 위치 의 문자를 지운다.
DNA 편집 프로그램은 Ins 연산과 Del 연산을 차례로 나열한 것이다. 편집 프로그램 두 개가 같은지 판정하는 프로그램을 작성하라. 여기서 두 프로그램이 같다는 것은 충분히 긴 문자열에 각각 적용했을 때 결과가 항상 같다는 뜻이다. 예를 들면 다음과 같다.
Del(1)Del(2)와Del(3)Del(1)은 같다.Del(2)Del(1)과Del(1)Del(2)는 다르다.- 연산이 하나도 없는 프로그램과
Ins(1, X)Del(1)은 같다. Ins(14, B)Ins(14, A)와Ins(14, A)Ins(15, B)는 같다.Ins(14, A)Ins(15, B)와Ins(14, B)Ins(15, A)는 다르다.
입력
입력은 DNA 편집 프로그램 두 개로 이루어진다. 각 프로그램의 연산 개수는 0개 이상 2,000개 이하이고, 연산 하나가 한 줄을 차지한다. 줄의 첫 글자는 Del 연산이면 D, Ins 연산이면 I, 프로그램의 끝이면 E이다.
D로 시작하는 줄은 D, 공백, 지울 문자의 위치 순서로 이어진다. 위치는 1 이상 이하의 정수다. 지워진 문자보다 뒤에 있던 문자는 모두 한 칸씩 앞으로 당겨진다.
I로 시작하는 줄은 I, 공백, 새 문자를 넣을 위치, 공백, 넣을 문자 순서로 이어진다. 위치는 1 이상 이하의 정수이고, 넣을 문자는 알파벳 대문자 하나다. 원래 그 위치에 있던 문자와 그보다 뒤에 있던 문자는 모두 한 칸씩 뒤로 밀린다.
출력
두 프로그램이 같으면 0을, 다르면 1을 한 줄에 출력한다.