아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

플러스 마이너스

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

요약
크기가 N 곱하기 M인 격자에서 모든 2 곱하기 2 부분격자가 양과 음을 각각 둘씩 가져야 한다는 조건과 K개의 고정된 칸을 만족하는 스핀 배열의 수를 10^9+7로 나눈 나머지를 구한다.
난이도

어려움10점 중 8점

유형
조합론, 유니온 파인드, 수학, 구현
정답자
아직 제출이 없습니다

문제

물리학자 Matthew는 실리콘 기반 직사각형 마이크로칩의 양자 전기역학을 연구한다. 마이크로칩은 매우 큰 N × M 격자의 전자로 이루어져 있다. 각 전자는 양의 스핀(업) 또는 음의 스핀(다운)을 가지며, 각각 +와 -로 표시한다.

Matthew는 모든 전자의 스핀을 알지는 못하지만, K번의 측정을 수행했다. i번째 측정에서 그는 위치 (yi, xi)의 전자가 주어진 스핀 si를 가진다는 것을 알아냈다. 또한 그는 모든 2 × 2 부분 격자에서 양의 스핀을 가진 전자와 음의 스핀을 가진 전자의 수가 같다는 것을 알고 있다. 그는 측정 결과를 바탕으로 모든 전자의 상태를 알아낼 수 있는지 알고 싶어 한다. 알아낼 수 없다면, 측정 결과와 일치하는 가능한 상태의 수를 알고 싶어 한다. 기밀 사유로 그는 답을 109 + 7로 나눈 나머지로 구하려고 한다.

입력

첫 번째 줄에 격자의 높이, 격자의 너비, 측정 횟수를 나타내는 세 수 N, M, K가 주어진다. 다음 K개의 줄에는 스핀 si와 두 수 1 ≤ yi ≤ N, 1 ≤ xi ≤ M가 주어진다. si는 + 또는 -이고, yi와 xi는 전자의 좌표이다. Matthew는 정확히 같은 위치에서 두 번 측정하지 않았다.

출력

Matthew의 측정 결과와 일치하는 유효한 상태의 총 개수를 109 + 7로 나눈 나머지를 출력한다.

제한

항상 1 ≤ N, M ≤ 109이고 0 ≤ K ≤ 100 000이다. 부분 문제의 입력에는 다음과 같은 추가 제한이 있다.

예제2

  1. 예제 1

    입력
    2 4 4
    + 1 1
    - 1 2
    + 1 3
    - 1 4
    
    예상 출력
    2
    
  2. 예제 2

    입력
    3 3 3
    - 2 1
    + 2 3
    + 3 3
    
    예상 출력
    0