만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

AB-문자열

시간 제한1초메모리 제한512 MB

요약
a와 b로만 이루어진 두 문자열 s와 t의 접두사를 서로 바꿉니다. 한 문자열은 a만, 다른 문자열은 b만 남도록 최소 연산 수와 과정을 구합니다.
난이도

어려움10점 중 9점

유형
그리디, 문자열, 구현
정답자
아직 제출이 없습니다

문제

두 문자열 ss와 tt가 주어진다. 두 문자열은 각각 a와 b로만 이루어져 있다. 다음 연산을 여러 번 수행할 수 있다. ss의 접두사 하나와 tt의 접두사 하나를 고른 뒤 서로 바꾼다. 접두사는 빈 문자열일 수 있고, 문자열 전체일 수도 있다.

연산을 거쳐 한 문자열은 a로만, 다른 문자열은 b로만 이루어지도록 만드는 연산 순서를 찾아야 한다. 연산 횟수는 최소여야 한다. 필요 이상으로 많은 연산을 쓰는 풀이도 일부 점수를 받는다. 자세한 내용은 채점 섹션을 참고한다.

입력

첫 번째 줄에 문자열 ss가 주어진다 (1≤∣s∣≤2×1051 \le |s| \le 2 \times 10^5). 두 번째 줄에 문자열 tt가 주어진다 (1≤∣t∣≤2×1051 \le |t| \le 2 \times 10^5). 두 문자열 중 적어도 하나에는 a가 있고, 적어도 하나에는 b가 있다.

출력

첫 번째 줄에 연산 횟수 nn (0≤n≤5×1050 \le n \le 5 \times 10^5)을 출력한다. 이어지는 nn개의 줄에는 서로 바꿀 ss의 접두사 길이 aia_i와 tt의 접두사 길이 bib_i를 한 줄에 하나씩 출력한다. 해가 여러 개라면 아무거나 출력해도 된다.

힌트

첫 번째 예제는 연산 두 번으로 풀 수 있다.

  1. ss의 길이 1인 접두사와 tt의 빈 접두사를 바꾼다. 두 문자열은 ab와 bbb가 된다.
  2. ss의 길이 1인 접두사와 tt의 길이 3인 접두사를 바꾼다. 두 문자열은 bbbb와 a가 된다.

두 번째 예제는 이미 조건을 만족하므로 연산이 필요 없다.

예제2

  1. 예제 1

    입력
    bab
    bb
    
    예상 출력
    2
    1 0
    1 3
    
  2. 예제 2

    입력
    bbbb
    aaa
    
    예상 출력
    0