atcoder#ABC260G. [ABC260G] Scalene Triangle Area

[ABC260G] Scalene Triangle Area

配点 : 600600

問題文

N×NN \times N のグリッドがあり、このグリッドの上から ii マス目、左から jj マス目を (i,j)(i,j) と呼びます。 このグリッドの各マスには高々 11 個のコマが置かれています。 グリッドの状態は NN 個の文字列 SiS_i として与えられ、

  • SiS_ijj 文字目が O であるとき (i,j)(i,j)11 つコマが置かれていること
  • SiS_ijj 文字目が X であるとき (i,j)(i,j) にコマは置かれていないこと

を表します。

整数 MM が与えられます。 この MM を使って、 (s,t)(s,t) に置かれているコマ PP について、以下の条件を全て満たすマス (u,v)(u,v)PP が守っているマスと定義します。

  • suNs \le u \le N
  • tvNt \le v \le N
  • (us)+(vt)2<M(u - s) + \frac{(v - t)}{2} < M

QQ 個のマス (Xi,Yi)(X_i,Y_i) について、そのマスを守っているコマの個数を求めてください。

制約

  • N,M,Xi,Yi,QN,M,X_i,Y_i,Q は整数
  • 1N20001 \le N \le 2000
  • 1M2×N1 \le M \le 2 \times N
  • SiS_iO, X からなる
  • 1Q2×1051 \le Q \le 2 \times 10^5
  • 1Xi,YiN1 \le X_i,Y_i \le N

入力

入力は以下の形式で標準入力から与えられる。

NN MM

S1S_1

S2S_2

\vdots

SNS_N

QQ

X1X_1 Y1Y_1

X2X_2 Y2Y_2

\vdots

XQX_Q YQY_Q

出力

QQ 行出力せよ。 そのうち ii ( 1iQ1 \le i \le Q ) 行目には、マス (Xi,Yi)(X_i,Y_i) を守っているコマの個数を整数として出力せよ。

4 2
OXXX
XXXX
XXXX
XXXX
6
1 1
1 4
2 2
2 3
3 1
4 4
1
1
1
0
0
0

マス (1,1)(1,1) のみにコマが置かれ、このコマによって以下の # のマスが守られます。

####
##..
....
....
5 10
OOOOO
OOOOO
OOOOO
OOOOO
OOOOO
5
1 1
2 3
3 4
4 2
5 5
1
6
12
8
25
8 5
OXXOXXOX
XOXXOXOX
XOOXOOXO
OXOOXOXO
OXXOXXOX
XOXXOXOX
XOOXOOXO
OXOOXOXO
6
7 2
8 1
4 5
8 8
3 4
1 7
5
3
9
14
5
3