File tree Expand file tree Collapse file tree 1 file changed +54
-0
lines changed
Expand file tree Collapse file tree 1 file changed +54
-0
lines changed Original file line number Diff line number Diff line change 1+ ``` java
2+ import java.io.BufferedReader ;
3+ import java.io.IOException ;
4+ import java.io.InputStreamReader ;
5+ import java.util.StringTokenizer ;
6+
7+ public class Main {
8+ public static void main (String [] args ) throws IOException {
9+
10+ BufferedReader br = new BufferedReader (new InputStreamReader (System . in));
11+ StringTokenizer st = new StringTokenizer (br. readLine());
12+
13+ int M = nextInt(st);
14+ int N = nextInt(st);
15+ int [][][] dp = new int [M + 1 ][N + 1 ][3 ];
16+
17+ int K = Integer . parseInt(br. readLine());
18+
19+ for (int i = 1 ; i < M + 1 ; i++ ) {
20+ String input = br. readLine();
21+ for (int j = 1 ; j < N + 1 ; j++ ) {
22+ char target = input. charAt(j - 1 );
23+ // J O I
24+ int idx = target == ' J' ? 0 : (target == ' O' ? 1 : 2 );
25+
26+ dp[i][j][0 ] = dp[i- 1 ][j][0 ] + dp[i][j- 1 ][0 ] - dp[i- 1 ][j- 1 ][0 ];
27+ dp[i][j][1 ] = dp[i- 1 ][j][1 ] + dp[i][j- 1 ][1 ] - dp[i- 1 ][j- 1 ][1 ];
28+ dp[i][j][2 ] = dp[i- 1 ][j][2 ] + dp[i][j- 1 ][2 ] - dp[i- 1 ][j- 1 ][2 ];
29+
30+ dp[i][j][idx]++ ;
31+ }
32+ }
33+
34+ for (int i = 0 ; i < K ; i++ ) {
35+ st = new StringTokenizer (br. readLine());
36+
37+ int x1 = nextInt(st);
38+ int y1 = nextInt(st);
39+ int x2 = nextInt(st);
40+ int y2 = nextInt(st);
41+
42+ for (int j = 0 ; j < 3 ; j++ ) {
43+ System . out. print(dp[x2][y2][j] - dp[x1- 1 ][y2][j] - dp[x2][y1- 1 ][j] + dp[x1- 1 ][y1- 1 ][j] + " " );
44+ }
45+ System . out. println();
46+ }
47+
48+
49+ }
50+ private static int nextInt (StringTokenizer st ) {
51+ return Integer . parseInt(st. nextToken());
52+ }
53+ }
54+ ```
You can’t perform that action at this time.
0 commit comments