fork download
  1. /* paiza POH! vol.2
  2.  * result:
  3.  * http://p...content-available-to-author-only...a.jp/poh/paizen/result/1e7a5bdf25a4c2a25172afaaa2cba7ea
  4.  * author: Leonardone @ NEETSDKASU
  5.  */
  6. #include <stdio.h>
  7.  
  8. #define OUTPUTSIZE (600000)
  9. char output[OUTPUTSIZE];
  10. char *optr = output;
  11.  
  12. inline void putInt(int v) {
  13. if (v < 10) {
  14. *optr = '0' + (char)v;
  15. ++optr;
  16. } else {
  17. putInt(v / 10);
  18. *optr = '0' + (char)(v % 10);
  19. ++optr;
  20. }
  21. }
  22.  
  23. inline void putNewline(void) {
  24. *optr = '\n';
  25. ++optr;
  26. }
  27.  
  28. #define BUFSIZE (900000)
  29. char buf[BUFSIZE];
  30. char *ptr = buf;
  31.  
  32. inline int getInt(void) {
  33. int v = 0;
  34. while (*ptr < '0' || *ptr > '9') ++ptr;
  35. while (*ptr >= '0' && *ptr <= '9') {
  36. v = 10 * v + (int)(*ptr - '0');
  37. ++ptr;
  38. }
  39. return v;
  40. }
  41.  
  42. inline char getChar(void) {
  43. while (*ptr < '0' || *ptr > '9') ++ptr;
  44. return *ptr++;
  45. }
  46.  
  47. int space2top[301];
  48. int table[301][301];
  49.  
  50. typedef int * PINT;
  51.  
  52. int main(void) {
  53. int H, W, N, s, t, i, x, y;
  54. char str[310];
  55. PINT p, q;
  56.  
  57. fread(buf, sizeof(char), BUFSIZE, stdin);
  58.  
  59. H = getInt();
  60. W = getInt();
  61.  
  62. for (y = 0; y < H; ++y) {
  63. q = space2top + 1;
  64. for (x = 0; x < W; ++x, ++q) {
  65. if (getChar() == '0') {
  66. p = q;
  67. s = ++(*p);
  68. t = 1;
  69. while (*p) {
  70. if (*p < s) {
  71. s = *p;
  72. }
  73. ++table[t][s];
  74. ++t;
  75. --p;
  76. }
  77. } else {
  78. *q = 0;
  79. }
  80. }
  81. }
  82.  
  83. for (x = 1; x <= W; ++x) {
  84. p = table[x] + H;
  85. for (y = 1; y < H; ++y) {
  86. --p;
  87. *p += *(p + 1);
  88. }
  89. }
  90.  
  91. N = getInt();
  92.  
  93. for (i = 0; i < N; ++i) {
  94. s = getInt();
  95. t = getInt();
  96. putInt(table[t][s]);
  97. putNewline();
  98. }
  99.  
  100. fwrite(output, sizeof(char), (int)optr - (int)output, stdout);
  101.  
  102. return 0;
  103. }
  104.  
Success #stdin #stdout 0s 4072KB
stdin
5 5
00000
00100
00010
10001
10000
7
2 2
1 1
3 2
3 2
2 3
3 1
1 3
stdout
6
20
2
2
1
6
7