/* paiza POH! vol.2
* result:
* http://p...content-available-to-author-only...a.jp/poh/paizen/result/2455d43008c0a1c7eaf5fe3cfa6e191d
* author: Leonardone @ NEETSDKASU
*/
#include <stdio.h>
int space2left[300][300];
int table[301][301];
int cache[301][301];
int spaceCount, count;
int main(void) {
int H, W, N, s, t, i, j, x, y;
char str[310];
for (y = 0; y < H; ++y) {
spaceCount = 0;
for (x = 0; x < W; ++x) {
if (str[x] == '0') {
++spaceCount;
} else {
spaceCount = 0;
}
space2left[y][x] = spaceCount;
}
}
for (y = 0; y < H; ++y) {
for (x = W - 1; x >= 0; --x) {
if (space2left[y][x] == 0) {
continue;
}
s = 1;
t = space2left[y][x];
for (i = y; i < H && space2left[i][x] > 0; i++) {
if (space2left[i][x] < t) {
t = space2left[i][x];
}
++table[s][t];
++s;
}
}
}
for (i = 0; i < N; ++i) {
count = 0;
if (s <= H && t <= W) {
if (cache[s][t]) {
count = cache[s][t] - 1 ;
} else {
for (j = t; j <= W; ++j) {
count += table[s][j];
}
cache[s][t] = count + 1;
}
}
}
return 0;
}
LyogcGFpemEgUE9IISB2b2wuMgogKiByZXN1bHQ6CiAqIGh0dHA6Ly9wLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5hLmpwL3BvaC9wYWl6ZW4vcmVzdWx0LzI0NTVkNDMwMDhjMGExYzdlYWY1ZmUzY2ZhNmUxOTFkCiAqIGF1dGhvcjogTGVvbmFyZG9uZSBAIE5FRVRTREtBU1UKICovCiNpbmNsdWRlIDxzdGRpby5oPgoKaW50IHNwYWNlMmxlZnRbMzAwXVszMDBdOwppbnQgdGFibGVbMzAxXVszMDFdOwppbnQgY2FjaGVbMzAxXVszMDFdOwoKaW50IHNwYWNlQ291bnQsIGNvdW50OwoKaW50IG1haW4odm9pZCkgewoJaW50IEgsIFcsIE4sIHMsIHQsIGksIGosIHgsIHk7CgljaGFyIHN0clszMTBdOwoJCglzY2FuZigiJWQgJWQiLCAmSCwgJlcpOwoJCglmb3IgKHkgPSAwOyB5IDwgSDsgKyt5KSB7CgkJc2NhbmYoIiVzIiwgc3RyKTsKCQlzcGFjZUNvdW50ID0gMDsKCQlmb3IgKHggPSAwOyB4IDwgVzsgKyt4KSB7CgkJCWlmIChzdHJbeF0gPT0gJzAnKSB7CgkJCQkrK3NwYWNlQ291bnQ7CgkJCX0gZWxzZSB7CgkJCQlzcGFjZUNvdW50ID0gMDsKCQkJfQoJCQlzcGFjZTJsZWZ0W3ldW3hdID0gc3BhY2VDb3VudDsKCQl9Cgl9CgkKCWZvciAoeSA9IDA7IHkgPCBIOyArK3kpIHsKCQlmb3IgKHggPSBXIC0gMTsgeCA+PSAwOyAtLXgpIHsKCQkJaWYgKHNwYWNlMmxlZnRbeV1beF0gPT0gMCkgewoJCQkJY29udGludWU7CgkJCX0KCQkJcyA9IDE7CgkJCXQgPSBzcGFjZTJsZWZ0W3ldW3hdOwoJCQlmb3IgKGkgPSB5OyBpIDwgSCAmJiBzcGFjZTJsZWZ0W2ldW3hdID4gMDsgaSsrKSB7CgkJCQlpZiAoc3BhY2UybGVmdFtpXVt4XSA8IHQpIHsKCQkJCQl0ID0gc3BhY2UybGVmdFtpXVt4XTsKCQkJCX0KCQkJCSsrdGFibGVbc11bdF07CgkJCQkrK3M7CgkJCX0KCQl9Cgl9CgkKCXNjYW5mKCIlZCIsICZOKTsKCQoJZm9yIChpID0gMDsgaSA8IE47ICsraSkgewoJCXNjYW5mKCIlZCAlZCIsICZzLCAmdCk7CgkJCgkJY291bnQgPSAwOwoJCQoJCWlmIChzIDw9IEggJiYgdCA8PSBXKSB7CgkJCWlmIChjYWNoZVtzXVt0XSkgewoJCQkJY291bnQgPSBjYWNoZVtzXVt0XSAtIDEgOwoJCQl9IGVsc2UgewoJCQkJZm9yIChqID0gdDsgaiA8PSBXOyArK2opIHsKCQkJCQljb3VudCArPSB0YWJsZVtzXVtqXTsKCQkJCX0KCQkJCWNhY2hlW3NdW3RdID0gY291bnQgKyAxOwoJCQl9CgkJfQoJCQoJCXByaW50ZigiJWRcbiIsIGNvdW50KTsKCX0KCQoJcmV0dXJuIDA7Cn0K