atcoder#ABC260G. [ABC260G] Scalene Triangle Area

[ABC260G] Scalene Triangle Area

Score : 600600 points

Problem Statement

We have an N×NN \times N grid. The square at the ii-th row from the top and jj-th column from the left in this grid is called (i,j)(i,j). Each square of the grid has at most one piece. The state of the grid is given by NN strings SiS_i:

  • if the jj-th character of SiS_i is O, then (i,j)(i,j) has a piece on it;
  • if the jj-th character of SiS_i is X, then (i,j)(i,j) has no piece on it.

You are given an integer MM. Using this MM, we define that a piece PP placed at (s,t)(s,t) covers a square (u,v)(u,v) if all of the following conditions are satisfied:

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

For each of QQ squares (Xi,Yi)(X_i,Y_i), find how many pieces cover the square.

Constraints

  • NN, MM, XiX_i, YiY_i, and QQ are integers.
  • 1N20001 \le N \le 2000
  • 1M2×N1 \le M \le 2 \times N
  • SiS_i consists of O and X.
  • 1Q2×1051 \le Q \le 2 \times 10^5
  • 1Xi,YiN1 \le X_i,Y_i \le N

Input

Input is given from Standard Input in the following format:

NN MM

S1S_1

S2S_2

\vdots

SNS_N

QQ

X1X_1 Y1Y_1

X2X_2 Y2Y_2

\vdots

XQX_Q YQY_Q

Output

Print QQ lines. The ii-th line ( 1iQ1 \le i \le Q ) should contain the number of pieces that covers (Xi,Yi)(X_i,Y_i) as an integer.

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

Only Square (1,1)(1,1) contains a piece, which covers the following # squares:

####
##..
....
....
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