이노포레스트
시간 제한2초메모리 제한512 MB
각 행이나 열에 같은 양의 물을 주는 연산으로 격자 a를 격자 b로 바꿀 수 있는지 판정하고, 가능하면 연산 목록을 출력한다.
문제
이노폴리스의 나무는 특별해서, 이노트리(Innopolis Tree)에 물을 주면 준 물의 양만큼 자란다. 다시 말해 높이 인 이노트리에 리터의 물을 주면 새 높이는 가 된다.
이노포레스트(Innopolis Forest)는 격자이고, 각 칸에는 이노트리가 하나씩 있다. 이노포레스트의 관개 시스템에는 개의 수로가 있다. 각 행과 각 열에 하나씩이다. 관개 시스템은 한 번의 작업으로 수로 하나를 따라 있는 모든 나무에 같은 양의 물을 줄 수 있다.
이노폴리스 시장은 관개 시스템에 몇 번의 작업을 수행해 이노포레스트를 바꾸려고 한다. 이노포레스트의 각 나무에 대해 현재 높이와 원하는 높이를 알고 있다. 이노포레스트를 원하는 모양으로 바꾸는 작업 순서를 구하라.
입력
첫째 줄에 두 수 과 이 주어진다 ().
그다음 개의 줄이 주어지고, 각 줄에는 개의 수 가 있다. 이는 이노포레스트에 있는 나무의 현재 높이이다 ().
그다음 개의 줄이 더 주어지고, 각 줄에는 개의 수 가 있다. 이는 나무의 원하는 높이이다 ().
출력
첫째 줄에는 작업의 수 를 출력한다 (). 그다음 개의 줄에는 작업의 설명을 출력한다.
- "
R r x" 시스템이 번째 행에 리터의 물을 준다. (, ). - "
C c x" 시스템이 번째 열에 리터의 물을 준다. (, ).
이노포레스트를 원하는 모양으로 바꾸는 것이 불가능하면 정수 -1 하나만 출력한다.
작업의 수를 최소화할 필요는 없고, 을 넘지 않기만 하면 된다.