만드는 중입니다

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

Memento Mori

시간 제한2.5초메모리 제한64 MB

요약
주어진 순열 p의 순서를 따르는 1 네 개를 포함한 부분행렬의 개수를 셉니다. 안에 다른 조건을 만족하는 부분행렬이 없는 경우만 셉니다.
난이도

어려움10점 중 9점

유형
행렬, 동적 계획법, 분할 정복
정답자
아직 제출이 없습니다

문제

장 교수에게 모든 원소가 0인 n×mn \times m 행렬이 있다. 장 교수는 이 행렬의 kk개 원소를 1로 바꾼다.

1,2,3,41, 2, 3, 4의 순열 p1,p2,p3,p4p_1, p_2, p_3, p_4가 주어졌을 때, 장 교수는 다음 조건을 모두 만족하는 부분 행렬의 개수를 구하려 한다.

  • 부분 행렬에 들어 있는 1의 개수가 정확히 4개이다.
  • 부분 행렬에서 1의 위치를 (r1,c1),(r2,c2),(r3,c3),(r4,c4)(r_1, c_1), (r_2, c_2), (r_3, c_3), (r_4, c_4)라 하자. 이때 r1<r2<r3<r4r_1 < r_2 < r_3 < r_4이고, 모든 1≤i<j≤41 \le i < j \le 4에 대해 (pi−pj)⋅(ci−cj)>0(p_i - p_j) \cdot (c_i - c_j) > 0이다.
  • 선택한 부분 행렬 안에 위 두 조건을 만족하는 다른 부분 행렬이 없다.

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다. 각 테스트 케이스의 첫 줄에는 행렬의 크기 nn, mm과 1의 개수 kk가 주어진다 (1≤n,m,k≤20001 \le n, m, k \le 2000). 둘째 줄에는 순열 p1,p2,p3,p4p_1, p_2, p_3, p_4가 주어진다. 이어서 kk개의 줄에 ii번째 1의 위치 rir_i, cic_i가 주어진다 (1≤ri≤n1 \le r_i \le n, 1≤ci≤m1 \le c_i \le m). 같은 위치에 두 개 이상의 1이 주어지지 않는다.

테스트 케이스는 최대 250개이며, 전체 입력 크기는 최대 250 KiB이다.

출력

각 테스트 케이스마다 조건을 모두 만족하는 부분 행렬의 개수를 한 줄에 출력한다.

예제1

  1. 예제 1

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