#include <stdio.h>
int inRoom(int x, int y, int w, int d)
{
return (x >= 0 && x < w && y >= 0 && y < d);
}
int main()
{
int x, y, w, d, currentX, currentY;
int direction;
int hasMirror[20][20];
int dx[4] = {0, 0, 1, -1};
int dy[4] = {1, -1, 0, 0};
int startWindow;
int t, testCases;
for (t = 0; t < testCases; t++) {
for (y = d - 1; y >=0; y--)
for (x = 0; x < w; x++)
scanf("%d", &(hasMirror
[x
][y
]));
for (startWindow = 0; startWindow < 2 * (w + d); startWindow++) {
if (startWindow < w) {
currentX = startWindow;
currentY = -1;
direction = 0;
} else if (startWindow >= w && startWindow < d + w) {
currentX = w;
currentY = startWindow - w;
direction = 3;
} else if (startWindow >= d + w && startWindow < d + 2 * w) {
currentX = 2 * w + d - startWindow - 1;
currentY = d;
direction = 1;
} else {
currentX = -1;
currentY = 2 * (d + w) - startWindow - 1;
direction = 2;
}
do {
currentX += dx[direction];
currentY += dy[direction];
if (hasMirror[currentX][currentY])
direction = (direction + 2) % 4;
} while (inRoom(currentX, currentY, w, d));
if (currentY < 0)
else if (currentX >= w)
else if (currentY >= d)
printf("%d\n", d
+ 2 * w
- currentX
- 1); else
printf("%d\n", 2 * (d
+ w
) - currentY
- 1); }
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgaW5Sb29tKGludCB4LCBpbnQgeSwgaW50IHcsIGludCBkKQp7CiAgcmV0dXJuICh4ID49IDAgJiYgeCA8IHcgJiYgeSA+PSAwICYmIHkgPCBkKTsKfQoKaW50IG1haW4oKQp7CiAgaW50IHgsIHksIHcsIGQsIGN1cnJlbnRYLCBjdXJyZW50WTsKICBpbnQgZGlyZWN0aW9uOwogIGludCBoYXNNaXJyb3JbMjBdWzIwXTsKICBpbnQgZHhbNF0gPSB7MCwgMCwgMSwgLTF9OwogIGludCBkeVs0XSA9IHsxLCAtMSwgMCwgMH07CiAgaW50IHN0YXJ0V2luZG93OwogIGludCB0LCB0ZXN0Q2FzZXM7CgogIHNjYW5mKCIlZCIsICZ0ZXN0Q2FzZXMpOwogIGZvciAodCA9IDA7IHQgPCB0ZXN0Q2FzZXM7IHQrKykgewogICAgc2NhbmYoIiVkJWQiLCAmdywgJmQpOwoKICAgIGZvciAoeSA9IGQgLSAxOyB5ID49MDsgeS0tKQogICAgICBmb3IgKHggPSAwOyB4IDwgdzsgeCsrKQoJc2NhbmYoIiVkIiwgJihoYXNNaXJyb3JbeF1beV0pKTsKCiAgICBmb3IgKHN0YXJ0V2luZG93ID0gMDsgc3RhcnRXaW5kb3cgPCAyICogKHcgKyBkKTsgc3RhcnRXaW5kb3crKykgewogICAgICBpZiAoc3RhcnRXaW5kb3cgPCB3KSB7CgljdXJyZW50WCA9IHN0YXJ0V2luZG93OwoJY3VycmVudFkgPSAtMTsKCWRpcmVjdGlvbiA9IDA7CiAgICAgIH0gZWxzZSBpZiAoc3RhcnRXaW5kb3cgPj0gdyAmJiBzdGFydFdpbmRvdyA8IGQgKyB3KSB7CgljdXJyZW50WCA9IHc7CgljdXJyZW50WSA9IHN0YXJ0V2luZG93IC0gdzsKCWRpcmVjdGlvbiA9IDM7CiAgICAgIH0gZWxzZSBpZiAoc3RhcnRXaW5kb3cgPj0gZCArIHcgJiYgc3RhcnRXaW5kb3cgPCBkICsgMiAqIHcpIHsKCWN1cnJlbnRYID0gMiAqIHcgKyBkIC0gc3RhcnRXaW5kb3cgLSAxOwoJY3VycmVudFkgPSBkOwoJZGlyZWN0aW9uID0gMTsKICAgICAgfSBlbHNlIHsKCWN1cnJlbnRYID0gLTE7CgljdXJyZW50WSA9IDIgKiAoZCArIHcpIC0gc3RhcnRXaW5kb3cgLSAxOwoJZGlyZWN0aW9uID0gMjsKICAgICAgfQogICAgCiAgICAgIGRvIHsKCWN1cnJlbnRYICs9IGR4W2RpcmVjdGlvbl07CgljdXJyZW50WSArPSBkeVtkaXJlY3Rpb25dOwoJaWYgKGhhc01pcnJvcltjdXJyZW50WF1bY3VycmVudFldKQoJICBkaXJlY3Rpb24gPSAoZGlyZWN0aW9uICsgMikgJSA0OwogICAgICB9IHdoaWxlIChpblJvb20oY3VycmVudFgsIGN1cnJlbnRZLCB3LCBkKSk7CiAgICAKICAgICAgaWYgKGN1cnJlbnRZIDwgMCkKCXByaW50ZigiJWRcbiIsIGN1cnJlbnRYKTsKICAgICAgZWxzZSBpZiAoY3VycmVudFggPj0gdykKCXByaW50ZigiJWRcbiIsIGN1cnJlbnRZICsgdyk7CiAgICAgIGVsc2UgaWYgKGN1cnJlbnRZID49IGQpCglwcmludGYoIiVkXG4iLCBkICsgMiAqIHcgLSBjdXJyZW50WCAtIDEpOwogICAgICBlbHNlIAoJcHJpbnRmKCIlZFxuIiwgMiAqIChkICsgdykgLSBjdXJyZW50WSAtIDEpOwogICAgfQogIH0KICByZXR1cm4gMDsKfQo=