#include <iostream>
using namespace std;
const int MAX_SIZE = 50;
int main() {
int mtSize, windLine[MAX_SIZE + 1][MAX_SIZE + 1];
cin >> mtSize;
for (int line = 1; line <= mtSize; ++line) {
for (int col = 1; col <= mtSize; ++col) {
cin >> windLine[line][col];
}
}
int linePos = 1, colPos = 1, lPlusC = linePos + colPos, lineDir = 0;
/*
pop.ga.flaviu
2024-02-11 10:36:11
Initialize 'lineDir' with the value of -1 and think how it could help you make your code shorter
*/
int colDir = 1;
for (int route = 1; route <= mtSize * mtSize; ++route) {
/*
pop.ga.flaviu
2024-02-11 10:35:24
Instead of 'mtSize * mtSize' use 2 variables, i and j, and multiple conditions.
Also, declare the 'linePos' and 'colPos' in the for loop's condition
*/
cout << windLine[linePos][colPos] << " ";
if (lPlusC % 2 && ((lineDir == 0 && colDir == 1 && lPlusC <= mtSize + 1)
/*
pop.ga.flaviu
2024-02-11 10:37:16
Let's use only 1 if statement here to print the result, then 1 if-else if.
*/
|| (lineDir == 1 && colDir == 0 && lPlusC >= mtSize + 1))) {
lineDir = 1;
colDir = -1;
}
if (lPlusC % 2 == 0 && ((lineDir == 0 && colDir == 1
&& lPlusC >= mtSize + 1) || (lineDir == 1 && colDir == 0
&& lPlusC <= mtSize + 1))) {
lineDir = -1;
colDir = 1;
}
if ((lineDir == 1 && colDir == -1 && lPlusC < mtSize + 1 && colPos == 1)
|| (lineDir == -1 && colDir == 1 && lPlusC >= mtSize + 1
&& colPos == mtSize)) {
lineDir = 1;
colDir = 0;
}
if ((lineDir == 1 && colDir == -1 && lPlusC >= mtSize + 1
&& linePos == mtSize) || (lineDir == -1 && colDir == 1 &&
lPlusC < mtSize + 1 && linePos == 1 )) {
lineDir = 0;
colDir = 1;
}
linePos += lineDir;
colPos += colDir;
lPlusC = linePos + colPos;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IE1BWF9TSVpFID0gNTA7CgppbnQgbWFpbigpIHsKICAgIGludCBtdFNpemUsIHdpbmRMaW5lW01BWF9TSVpFICsgMV1bTUFYX1NJWkUgKyAxXTsKICAgIGNpbiA+PiBtdFNpemU7CiAgICBmb3IgKGludCBsaW5lID0gMTsgbGluZSA8PSBtdFNpemU7ICsrbGluZSkgewogICAgICAgIGZvciAoaW50IGNvbCA9IDE7IGNvbCA8PSBtdFNpemU7ICsrY29sKSB7CiAgICAgICAgICAgIGNpbiA+PiB3aW5kTGluZVtsaW5lXVtjb2xdOwogICAgICAgIH0KICAgIH0KICAgIGludCBsaW5lUG9zID0gMSwgY29sUG9zID0gMSwgbFBsdXNDID0gbGluZVBvcyArIGNvbFBvcywgbGluZURpciA9IDA7Ci8qCnBvcC5nYS5mbGF2aXUKMjAyNC0wMi0xMSAxMDozNjoxMQpJbml0aWFsaXplICdsaW5lRGlyJyB3aXRoIHRoZSB2YWx1ZSBvZiAtMSBhbmQgdGhpbmsgaG93IGl0IGNvdWxkIGhlbHAgeW91IG1ha2UgeW91ciBjb2RlIHNob3J0ZXIKKi8KICAgIGludCBjb2xEaXIgPSAxOwogICAgZm9yIChpbnQgcm91dGUgPSAxOyByb3V0ZSA8PSBtdFNpemUgKiBtdFNpemU7ICsrcm91dGUpIHsKLyoKcG9wLmdhLmZsYXZpdQoyMDI0LTAyLTExIDEwOjM1OjI0Ckluc3RlYWQgb2YgJ210U2l6ZSAqIG10U2l6ZScgdXNlIDIgdmFyaWFibGVzLCBpIGFuZCBqLCBhbmQgbXVsdGlwbGUgY29uZGl0aW9ucy4KCkFsc28sIGRlY2xhcmUgdGhlICdsaW5lUG9zJyBhbmQgJ2NvbFBvcycgaW4gdGhlIGZvciBsb29wJ3MgY29uZGl0aW9uCiovCiAgICAgICAgY291dCA8PCB3aW5kTGluZVtsaW5lUG9zXVtjb2xQb3NdIDw8ICIgIjsKICAgICAgICBpZiAobFBsdXNDICUgMiAmJiAoKGxpbmVEaXIgPT0gMCAmJiBjb2xEaXIgPT0gMSAmJiBsUGx1c0MgPD0gbXRTaXplICsgMSkgCi8qCnBvcC5nYS5mbGF2aXUKMjAyNC0wMi0xMSAxMDozNzoxNgpMZXQncyB1c2Ugb25seSAxIGlmIHN0YXRlbWVudCBoZXJlIHRvIHByaW50IHRoZSByZXN1bHQsIHRoZW4gMSBpZi1lbHNlIGlmLgoqLwogICAgICAgICAgICB8fCAobGluZURpciA9PSAxICYmIGNvbERpciA9PSAwICYmIGxQbHVzQyA+PSBtdFNpemUgKyAxKSkpIHsKICAgICAgICAgICAgbGluZURpciA9IDE7CiAgICAgICAgICAgIGNvbERpciA9IC0xOwogICAgICAgIH0KICAgICAgICBpZiAobFBsdXNDICUgMiA9PSAwICYmICgobGluZURpciA9PSAwICYmIGNvbERpciA9PSAxIAogICAgICAgICAgICAmJiBsUGx1c0MgPj0gbXRTaXplICsgMSkgfHwgKGxpbmVEaXIgPT0gMSAmJiBjb2xEaXIgPT0gMCAKICAgICAgICAgICAgJiYgbFBsdXNDIDw9IG10U2l6ZSArIDEpKSkgewogICAgICAgICAgICBsaW5lRGlyID0gLTE7CiAgICAgICAgICAgIGNvbERpciA9IDE7CiAgICAgICAgfQogICAgICAgIGlmICgobGluZURpciA9PSAxICYmIGNvbERpciA9PSAtMSAmJiBsUGx1c0MgPCBtdFNpemUgKyAxICYmIGNvbFBvcyA9PSAxKSAKICAgICAgICAgICAgfHwgIChsaW5lRGlyID09IC0xICYmIGNvbERpciA9PSAxICYmIGxQbHVzQyA+PSBtdFNpemUgKyAxIAogICAgICAgICAgICAmJiBjb2xQb3MgPT0gbXRTaXplKSkgewogICAgICAgICAgICBsaW5lRGlyID0gMTsKICAgICAgICAgICAgY29sRGlyID0gMDsKICAgICAgICB9CiAgICAgICAgaWYgKChsaW5lRGlyID09IDEgJiYgY29sRGlyID09IC0xICYmIGxQbHVzQyA+PSBtdFNpemUgKyAxIAogICAgICAgICAgICAmJiBsaW5lUG9zID09IG10U2l6ZSkgfHwgKGxpbmVEaXIgPT0gLTEgJiYgY29sRGlyID09IDEgJiYgCiAgICAgICAgICAgIGxQbHVzQyA8IG10U2l6ZSArIDEgJiYgbGluZVBvcyA9PSAxICkpIHsKICAgICAgICAgICAgbGluZURpciA9IDA7CiAgICAgICAgICAgIGNvbERpciA9IDE7CiAgICAgICAgfQogICAgICAgIGxpbmVQb3MgKz0gbGluZURpcjsKICAgICAgICBjb2xQb3MgKz0gY29sRGlyOwogICAgICAgIGxQbHVzQyA9IGxpbmVQb3MgKyBjb2xQb3M7CiAgICB9CiAgICByZXR1cm4gMDsKfQ==