fork download
  1.  
  2. import java.util.*;
  3. import java.lang.*;
  4. import java.io.*;
  5.  
  6. class Main
  7. {
  8. void answer(int count)
  9. {
  10. System.out.println(count);
  11. }
  12.  
  13. /**
  14. * @param H ホーム画面縦の区画数
  15. * @param W ホーム画面横の区画数
  16. * @param array[Y][X] ホーム画面の配置
  17. * @param S ウィジェットの縦サイズ
  18. * @param T ウィジェットの横サイズ
  19. */
  20. void resolve(int H, int W, int[][] array, int S, int T)
  21. {
  22. // your code goes here
  23. int count = 0;
  24. for (int i = 0; i < H; i++) {
  25. for (int j = 0; j < W; j++) {
  26. boolean flag = true;
  27. for (int p = 0; flag && p < S; p++) {
  28. for (int q = 0; flag && q < T; q++) {
  29. int x = j + q;
  30. int y = i + p;
  31. if (x >= W || y >= H) {
  32. flag = false;
  33. } else if (array[y][x] == 1) {
  34. flag = false;
  35. }
  36. }
  37. }
  38. if (flag) {
  39. count++;
  40. }
  41. }
  42. }
  43. answer(count);
  44. }
  45.  
  46. public static void main (String[] args) throws java.lang.Exception
  47. {
  48. Main instance = new Main();
  49.  
  50. String[] hw = in.readLine().split(" ");
  51. final int H = Integer.parseInt(hw[0]); // ホーム画面縦の区画数
  52. final int W = Integer.parseInt(hw[1]); // ホーム画面横の区画数
  53.  
  54. int[][] home = new int[H][W];
  55.  
  56. for (int y = 0; y < H; y++)
  57. {
  58. String line = in.readLine();
  59. for (int x = 0; x < W; x++)
  60. {
  61. home[y][x] = (int)(line.charAt(x) - '0');
  62. }
  63. }
  64.  
  65. final int N = Integer.parseInt(in.readLine());
  66.  
  67. for (int i = 0; i < N; i++)
  68. {
  69. String[] st = in.readLine().split(" ");
  70. int s = Integer.parseInt(st[0]); // ウィジェットの縦サイズ
  71. int t = Integer.parseInt(st[1]); // ウィジェットの横サイズ
  72.  
  73. instance.resolve(H, W, home, s, t);
  74. }
  75. }
  76. }
  77.  
Success #stdin #stdout 0.07s 380224KB
stdin
5 5
00000
00100
00010
10001
10000
3
2 2
1 1
3 2
stdout
6
20
2