상근이는 우주선을 타고 인간이 거주할 수 있는 행성을 찾고 있다. 마침내, 전 세계 최초로 인간이 거주할 수 있는 행성을 찾았다. 이 행성은 정글, 바다, 얼음이 뒤얽힌 행성이다. 상근이는 이 행성에서 거주 할 수 있는 구역의 지도를 만들어 지구로 보냈다.
상근이가 보내온 지도는 가로 Ncm, 세로 Mcm 직사각형 모양이다. 지도는 1cm 크기의 정사각형으로 나누어져 있고, 각 구역의 지형이 알파벳으로 표시되어 있다. 지형은 정글, 바다, 얼음 중 하나이며, 정글은 J, 바다는 O, 얼음은 I로 표시되어 있다.
지구에 있는 정인이는 조사 대상 영역을 K개 만들었다. 이때, 각 영역에 정글, 바다, 얼음이 각각 몇 개씩 있는지 구하는 프로그램을 작성하시오.
# 5549
import sys
input = lambda: sys.stdin.readline().strip()
# 1. arr_j, arr_o, arr_i
# 2. sum_j, sum_o, sum_i
# 3. k-count
m, n = map(int, input().split())
k = int(input())
arr = [list(input()) for _ in range(m)]
# 1. arr_j, arr_o, arr_i
arr_j = [[0] * n for _ in range(m)]
arr_o = [[0] * n for _ in range(m)]
arr_i = [[0] * n for _ in range(m)]
for i in range(m):
for j in range(n):
if arr[i][j] == "J":
arr_j[i][j] = 1
elif arr[i][j] == "O":
arr_o[i][j] = 1
else:
arr_i[i][j] = 1
# 2. sum_j, sum_o, sum_i
sum_j = [[0] * (n+1) for _ in range(m+1)]
sum_o = [[0] * (n+1) for _ in range(m+1)]
sum_i = [[0] * (n+1) for _ in range(m+1)]
for i in range(1, m+1):
for j in range(1, n+1):
sum_j[i][j] = arr_j[i-1][j-1] + sum_j[i-1][j] + sum_j[i][j-1] - sum_j[i-1][j-1]
sum_o[i][j] = arr_o[i-1][j-1] + sum_o[i-1][j] + sum_o[i][j-1] - sum_o[i-1][j-1]
sum_i[i][j] = arr_i[i-1][j-1] + sum_i[i-1][j] + sum_i[i][j-1] - sum_i[i-1][j-1]
# 3. k-count
for _ in range(k):
a, b, c, d = map(int, input().split())
a, b = a-1, b-1
num_j = sum_j[c][d] - sum_j[c][b] - sum_j[a][d] + sum_j[a][b]
num_o = sum_o[c][d] - sum_o[c][b] - sum_o[a][d] + sum_o[a][b]
num_i = sum_i[c][d] - sum_i[c][b] - sum_i[a][d] + sum_i[a][b]
print(num_j, num_o, num_i)