/* paiza POH! vol.2
* result:
* http://p...content-available-to-author-only...a.jp/poh/paizen/result/1e7a5bdf25a4c2a25172afaaa2cba7ea
* author: Leonardone @ NEETSDKASU
*/
#include <stdio.h>
#define OUTPUTSIZE (600000)
char output[OUTPUTSIZE];
char *optr = output;
inline void putInt(int v) {
if (v < 10) {
*optr = '0' + (char)v;
++optr;
} else {
putInt(v / 10);
*optr = '0' + (char)(v % 10);
++optr;
}
}
inline void putNewline(void) {
*optr = '\n';
++optr;
}
#define BUFSIZE (900000)
char buf[BUFSIZE];
char *ptr = buf;
inline int getInt(void) {
int v = 0;
while (*ptr < '0' || *ptr > '9') ++ptr;
while (*ptr >= '0' && *ptr <= '9') {
v = 10 * v + (int)(*ptr - '0');
++ptr;
}
return v;
}
inline char getChar(void) {
while (*ptr < '0' || *ptr > '9') ++ptr;
return *ptr++;
}
int space2top[301];
int table[301][301];
typedef int * PINT;
int main(void) {
int H, W, N, s, t, i, x, y;
char str[310];
PINT p, q;
fread(buf
, sizeof(char), BUFSIZE
, stdin
);
H = getInt();
W = getInt();
for (y = 0; y < H; ++y) {
q = space2top + 1;
for (x = 0; x < W; ++x, ++q) {
if (getChar() == '0') {
p = q;
s = ++(*p);
t = 1;
while (*p) {
if (*p < s) {
s = *p;
}
++table[t][s];
++t;
--p;
}
} else {
*q = 0;
}
}
}
for (x = 1; x <= W; ++x) {
p = table[x] + H;
for (y = 1; y < H; ++y) {
--p;
*p += *(p + 1);
}
}
N = getInt();
for (i = 0; i < N; ++i) {
s = getInt();
t = getInt();
putInt(table[t][s]);
putNewline();
}
fwrite(output
, sizeof(char), (int)optr
- (int)output
, stdout
);
return 0;
}
LyogcGFpemEgUE9IISB2b2wuMgogKiByZXN1bHQ6CiAqIGh0dHA6Ly9wLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5hLmpwL3BvaC9wYWl6ZW4vcmVzdWx0LzFlN2E1YmRmMjVhNGMyYTI1MTcyYWZhYWEyY2JhN2VhCiAqIGF1dGhvcjogTGVvbmFyZG9uZSBAIE5FRVRTREtBU1UKICovCiNpbmNsdWRlIDxzdGRpby5oPgoKI2RlZmluZSBPVVRQVVRTSVpFICg2MDAwMDApCmNoYXIgb3V0cHV0W09VVFBVVFNJWkVdOwpjaGFyICpvcHRyID0gb3V0cHV0OwogCmlubGluZSB2b2lkIHB1dEludChpbnQgdikgewoJaWYgKHYgPCAxMCkgewoJCSpvcHRyID0gJzAnICsgKGNoYXIpdjsKCQkrK29wdHI7Cgl9IGVsc2UgewoJCXB1dEludCh2IC8gMTApOwoJCSpvcHRyID0gJzAnICsgKGNoYXIpKHYgJSAxMCk7CgkJKytvcHRyOwoJfQp9CiAKaW5saW5lIHZvaWQgcHV0TmV3bGluZSh2b2lkKSB7Cgkqb3B0ciA9ICdcbic7CgkrK29wdHI7Cn0KIAojZGVmaW5lIEJVRlNJWkUgKDkwMDAwMCkKY2hhciBidWZbQlVGU0laRV07CmNoYXIgKnB0ciA9IGJ1ZjsKIAppbmxpbmUgaW50IGdldEludCh2b2lkKSB7CglpbnQgdiA9IDA7Cgl3aGlsZSAoKnB0ciA8ICcwJyB8fCAqcHRyID4gJzknKSArK3B0cjsKCXdoaWxlICgqcHRyID49ICcwJyAmJiAqcHRyIDw9ICc5JykgewoJCXYgPSAxMCAqIHYgKyAoaW50KSgqcHRyIC0gJzAnKTsKCQkrK3B0cjsKCX0KCXJldHVybiB2Owp9CiAKaW5saW5lIGNoYXIgZ2V0Q2hhcih2b2lkKSB7Cgl3aGlsZSAoKnB0ciA8ICcwJyB8fCAqcHRyID4gJzknKSArK3B0cjsKCXJldHVybiAqcHRyKys7Cn0KCmludCBzcGFjZTJ0b3BbMzAxXTsKaW50IHRhYmxlWzMwMV1bMzAxXTsKCnR5cGVkZWYgaW50ICogUElOVDsKCmludCBtYWluKHZvaWQpIHsKCWludCBILCBXLCBOLCBzLCB0LCBpLCB4LCB5OwoJY2hhciBzdHJbMzEwXTsKCVBJTlQgcCwgcTsKCQoJZnJlYWQoYnVmLCBzaXplb2YoY2hhciksIEJVRlNJWkUsIHN0ZGluKTsKCQoJSCA9IGdldEludCgpOwoJVyA9IGdldEludCgpOwoJCglmb3IgKHkgPSAwOyB5IDwgSDsgKyt5KSB7CgkJcSA9IHNwYWNlMnRvcCArIDE7CgkJZm9yICh4ID0gMDsgeCA8IFc7ICsreCwgKytxKSB7CgkJCWlmIChnZXRDaGFyKCkgPT0gJzAnKSB7CgkJCQlwID0gcTsKCQkJCXMgPSArKygqcCk7CgkJCQl0ID0gMTsKCQkJCXdoaWxlICgqcCkgewoJCQkJCWlmICgqcCA8IHMpIHsKCQkJCQkJcyA9ICpwOwoJCQkJCX0KCQkJCQkrK3RhYmxlW3RdW3NdOwoJCQkJCSsrdDsKCQkJCQktLXA7CgkJCQl9CgkJCX0gZWxzZSB7CgkJCQkqcSA9IDA7CgkJCX0KCQl9Cgl9CgkKCWZvciAoeCA9IDE7IHggPD0gVzsgKyt4KSB7CgkJcCA9IHRhYmxlW3hdICsgSDsKCQlmb3IgKHkgPSAxOyB5IDwgSDsgKyt5KSB7CgkJCS0tcDsKCQkJKnAgKz0gKihwICsgMSk7CgkJfQoJfQoJCglOID0gZ2V0SW50KCk7CgkKCWZvciAoaSA9IDA7IGkgPCBOOyArK2kpIHsKCQlzID0gZ2V0SW50KCk7CgkJdCA9IGdldEludCgpOwoJCXB1dEludCh0YWJsZVt0XVtzXSk7CgkJcHV0TmV3bGluZSgpOwoJfQoJCglmd3JpdGUob3V0cHV0LCBzaXplb2YoY2hhciksIChpbnQpb3B0ciAtIChpbnQpb3V0cHV0LCBzdGRvdXQpOwoJCQoJcmV0dXJuIDA7Cn0K