사각형 모험

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

요약
사과와 바나나 농장으로 채워진 격자에서 각 예측마다 (1,1)에서 (N,M)까지 최단 경로를 지나 얻은 사과와 바나나를 모두 팔아 값이 정확히 C가 되도록 할 수 있는지 판별한다.
난이도

보통10점 중 7점

유형
동적 계획법, 수학, 누적 합, 완전 탐색
정답자
아직 제출이 없습니다

문제

포닉스는 N×MN\times M 크기의 격자에서 살고 있었다. 각 칸은 정사각형 모양이며, 격자의 각 칸에서는 상하좌우로 인접한 칸으로 자유롭게 이동할 수 있다. rr번째 행, cc번째 열에 위치한 칸을 (r,c)(r,c)라 하자.

포닉스가 살고 있는 격자는 큰 도시로 발전하였다. (1,1)(1,1)에는 포닉스의 집이, (N,M)(N,M)에는 시장이 위치해 있다. 포닉스의 집과 시장을 포함한 격자의 모든 칸에는 사과 농장과 바나나 농장 중 하나가 위치하고 있다. 사과 농장이 있는 칸에 방문하면 사과를 11개, 바나나 농장이 있는 칸에 방문하면 바나나를 11개 얻는다. 포닉스는 욕심쟁이이기 때문에 과일을 얻지 않는 경우는 없다.

포닉스는 집에서 출발한 후 가능한 짧은 경로로 시장에 도착해 쌀국수를 사 먹으려 한다. 허나 문제는 사과와 바나나, 쌀국수의 가격이 계속 변한다는 것이다. 따라서 포닉스는 앞으로 KK번에 걸쳐 시장 가격을 예측하려 한다.

ii번째 예측에서 사과 하나, 바나나 하나, 쌀국수의 예상 가격은 각각 A_iA\_i, B_iB\_i, C_iC\_i이다. 포닉스가 시장에 도착했을 때 포닉스가 가진 사과와 바나나를 모두 팔아 얻은 돈이 C_iC\_i와 정확히 같다면, 포닉스는 쌀국수를 사 먹을 수 있다.

각 예측에 대해 포닉스가 적절한 경로로 시장에 도착해 쌀국수를 사 먹을 수 있는지 판별하여라.

입력

첫 번째 줄에 격자의 크기를 나타내는 두 정수 NN, MM과 예측의 수 KK가 공백으로 구분되어 주어진다. (2≤N,M≤2,000;1≤K≤500000)(2\le N,M\le 2\\, 000;1\le K\le 500 000)

두 번째 줄부터 NN개의 줄에 걸쳐 길이 MM의 문자열이 주어진다. ii번째 줄의 jj번째 문자는 (i,j)(i,j)에 위치한 과일 농장의 종류를 의미한다. A는 사과 농장을, B는 바나나 농장을 의미한다.

N+2N+2번째 줄부터 KK개의 줄에 걸쳐, N+1+iN+1+i번째 줄에 각각 ii번째 예측의 사과 하나, 바나나 하나, 쌀국수의 가격을 의미하는 세 정수 A_iA\_i, B_iB\_i, C_iC\_i가 공백으로 구분되어 주어진다. (1≤A_i,B_i≤500,000;1≤C_i≤2×109)(1\le A\_i,B\_i\le 500\\, 000;1\le C\_i\le 2\times 10^9)

출력

KK개의 줄에 걸쳐 ii번째 예측에 대해 포닉스가 쌀국수를 사 먹을 수 있다면 YES, 그렇지 않으면 NO를 한 줄에 하나씩 순서대로 출력한다.

예제1

  1. 예제 1

    입력
    3 4 3
    ABBA
    ABBB
    ABAA
    2 3 15
    5 3 25
    1 1 6
    
    예상 출력
    YES
    NO
    YES