허용 가능한 좌석 배치
시간 제한1초메모리 제한2048 MB
각 행에서 키가 왼쪽에서 오른쪽으로 증가하는 상태를 유지하면서, 원래 좌석 배치를 목표 배치로 바꾸는 교환 순서를 찾습니다.
문제
찰리는 교실을 관리한다. 교실의 좌석은 행과 열로 이루어진 격자 모양으로 배치되어 있다. 학생마다 키가 서로 다르다.
학생들을 좌석에 배정한 상태가 허용 가능하려면 다음 조건을 만족해야 한다:
- 각 학생은 정확히 하나의 좌석에 배정된다.
- 각 행에서 학생들은 왼쪽에서 오른쪽으로 키가 증가하는 순서로 앉는다.
학생들은 처음에 허용 가능한 배치로 앉아 있다. 찰리는 학생들을 다른 허용 가능한 배치로 바꾸고 싶어 한다. 그 배치는 처음 배치와 모든 좌석이 다를 수도, 일부만 다를 수도 있다. 이를 위해 두 학생을 맞바꿀 수 있다. 다만 매번 맞바꾼 뒤에도 배치가 허용 가능한 상태를 유지해야 한다.
학생들을 처음 배치에서 찰리가 원하는 배치로 옮기는 전략을 찾는 것을 도와라. 교환 횟수를 최소로 할 필요는 없지만, 교환은 최대 번까지만 할 수 있다.
입력 조건을 만족하는 모든 입력에 대해 이것이 항상 가능하다는 것이 증명되어 있다.
입력
첫째 줄에 두 정수 과 ()가 주어진다. 찰리의 교실에는 개의 행과 개의 열로 된 좌석이 있다.
다음 개 줄에는 각각 개의 정수 ()가 주어진다. 이는 처음 배치에서 각 행에 앉은 학생들의 키다. 키는 모두 서로 다르며, 배치는 허용 가능한 상태다.
그다음 개 줄에는 각각 개의 정수 ()가 주어진다. 이는 찰리가 원하는 배치에서 각 행에 앉은 학생들의 키다. 키는 모두 서로 다르며, 배치는 허용 가능한 상태다.
출력
첫 줄에 수행할 교환 횟수 ()를 출력한다.
이어서 처음 배치를 찰리가 원하는 배치로 바꾸는 번의 교환을 출력한다. 다음 개 줄에는 각각 네 정수 , , , (, , )를 적는다. 이는 행 열의 학생과 행 열의 학생을 맞바꾼다는 뜻이다.
매 교환 후에도 배치는 허용 가능한 상태여야 한다. 입력 조건을 만족하는 모든 입력에 대해 번 미만의 교환으로 항상 가능하다는 것이 증명되어 있다.