Thinking Tiling 1

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

요약
R×C 격자를 2×3 또는 3×2 타일로 정확히 덮을 수 있는지 판정하고, 가능하면 아무 배치나 출력한다.
난이도

보통10점 중 7점

유형
구현, 수학, 그리디, 완전 탐색
정답자
아직 제출이 없습니다

문제

세로 길이 RR, 가로 길이 CC의 직사각형 영역을 2×32\times 3 크기의 직사각형 타일로 덮으려고 한다. 이때 두 타일이 겹치거나, 직사각형 영역 밖으로 나가거나, 덮이지 않은 틈이 생기지 않도록 직사각형 타일을 배치할 수 있는지 판별하고, 가능하다면 그러한 배치를 아무거나 하나 출력하시오. 타일은 회전할 수 있다. 사용한 타일의 개수를 최소화하거나 최대화할 필요는 없다.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다. (1≤T≤1 0001\le T\le 1\ 000)

둘째 줄부터 TT개의 줄에 걸쳐서, 각 테스트 케이스마다 정수 RR과 CC가 한 줄에 공백으로 구분되어 주어진다. (1≤R,C≤1 0001\le R,C\le 1\ 000)

모든 테스트 케이스에서 R×CR\times C의 합은 10610^6을 초과하지 않는다.

출력

각 테스트 케이스마다 다음과 같이 출력한다.

  • 조건을 충족하는 타일의 배치가 존재한다면, 첫째 줄에 타일의 개수 nn을 먼저 출력하고, 둘째 줄부터 nn개의 줄에 걸쳐 각 타일의 배치를 typetype, rr, cc의 순서로 공백으로 구분하여 출력한다. 타일을 가로로 길게 배치하고자 할 경우 typetype은 1이고, 세로로 길게 배치하면 2이다. rr과 cc는 그 타일의 맨 왼쪽 위 칸의 행 번호와 열 번호를 뜻하며, 직사각형 전체의 맨 왼쪽 위 칸은 11행 11열, 맨 아래 오른쪽 칸은 RR행 CC열이다.
  • 그러한 배치가 존재하지 않는다면, 0을 출력한다.

예제1

  1. 예제 1

    입력
    3
    6 1
    6 2
    6 3
    
    예상 출력
    0
    2
    2 1 1
    2 4 1
    3
    1 1 1
    1 3 1
    1 5 1