예산안

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

요약
행 합계와 열 합계, 그리고 개별 칸이나 행/열 전체에 걸린 부등식 제약이 주어질 때, 음이 아닌 정수 행렬이 존재하는지 판정한다.
난이도

보통10점 중 4점

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

문제

예산안은 행이 서로 다른 지출 항목을, 열이 서로 다른 지점(사이트)을 나타내는 표(행렬)이다.

우리는 이미 두 가지를 알고 있다. 각 지출 항목의 합계(각 행의 합)와 각 지점의 합계(각 열의 합)이다. 여기에 더해 개별 칸에 대한 추가 제약이 주어질 수 있다. 예를 들어 어떤 지점은 식비로 최소 2000크로나가 필요하고, 다른 지점은 클립 구입에 100크로나를 넘게 쓰지 않는다는 식이다.

음이 아닌 정수만 사용하면서 모든 행의 합과 열의 합을 정확히 맞추고, 모든 추가 제약을 만족하는 예산안(행렬)이 존재하는지 판정하여라.

입력

첫째 줄에 테스트 케이스의 수 NN이 주어진다.

각 테스트 케이스는 다음과 같이 주어진다.

  • 첫째 줄에 두 정수 mm과 nn이 주어진다 (m≤200m \le 200, n≤20n \le 20). 각각 행의 수와 열의 수이다.
  • 둘째 줄에 행렬의 각 행의 합을 나타내는 mm개의 정수가 주어진다.
  • 셋째 줄에 행렬의 각 열의 합을 나타내는 nn개의 정수가 주어진다.
  • 넷째 줄에 제약의 수 cc가 주어진다.
  • 다음 cc개의 줄에 각각 하나의 제약이 주어진다.

제약은 r c op v 형태로 주어진다. 정수 rr과 cc는 행렬의 칸(또는 여러 칸)을 가리킨다. 왼쪽 위 칸이 1 1이며, 0은 전체를 뜻한다. 즉 4 0은 넷째 행의 모든 칸을, 0 0은 행렬 전체를 가리킨다. op는 <, =, > 중 하나이고 vv는 정수이다. 예를 들어 1 2 > 5는 1행 2열의 값이 55보다 커야 함을, 4 0 = 3은 넷째 행의 모든 값이 33이어야 함을 의미한다.

출력

각 테스트 케이스에 대하여, 모든 행의 합과 열의 합, 그리고 모든 제약을 만족하는 음이 아닌 정수 행렬이 존재하면 POSSIBLE을, 존재하지 않으면 IMPOSSIBLE을 한 줄에 하나씩 출력하여라.

예제3

  1. 예제 1

    입력
    2
    2 3
    8 10
    5 6 7
    4
    0 2 > 2
    2 1 = 3
    2 3 > 2
    2 3 < 5
    
    2 2
    4 5
    6 7
    1
    1 1 > 10
    예상 출력
    POSSIBLE
    IMPOSSIBLE
    
  2. 예제 2

    입력
    1
    1 1
    5
    5
    0
    예상 출력
    POSSIBLE
    
  3. 예제 3

    입력
    1
    1 1
    5
    6
    0
    예상 출력
    IMPOSSIBLE