rect.cpp: In member function 'void SparseMIN::build(short int*, short int)':
rect.cpp:33:81: warning: suggest parentheses around '-' inside '<<' [-Wparentheses]
33 | sparse[i][lg] = std::min(sparse[i][lg - 1], sparse[i + (1 << lg - 1)][lg - 1]);
| ~~~^~~
rect.cpp: In member function 'void SparseMAX::build(short int*, short int)':
rect.cpp:64:81: warning: suggest parentheses around '-' inside '<<' [-Wparentheses]
64 | sparse[i][lg] = std::max(sparse[i][lg - 1], sparse[i + (1 << lg - 1)][lg - 1]);
| ~~~^~~
rect.cpp: In function 'bool isOK(short int, short int, short int, short int)':
rect.cpp:95:38: error: cannot bind non-const lvalue reference of type 'short int&' to an rvalue of type 'short int'
95 | if (!sparseRD[rowB].findMIN(colB + 1, colE - 1, rowE)) return false;
| ~~~~~^~~
rect.cpp:38:26: note: initializing argument 1 of 'short int SparseMIN::findMIN(short int&, short int&, short int&)'
38 | short findMIN(short &l, short &r, short &val)
| ~~~~~~~^
rect.cpp:96:38: error: cannot bind non-const lvalue reference of type 'short int&' to an rvalue of type 'short int'
96 | if (!sparseRU[rowE].findMAX(colB + 1, colE - 1, rowB)) return false;
| ~~~~~^~~
rect.cpp:69:25: note: initializing argument 1 of 'bool SparseMAX::findMAX(short int&, short int&, short int&)'
69 | bool findMAX(short &l, short &r, short &val)
| ~~~~~~~^
rect.cpp:97:38: error: cannot bind non-const lvalue reference of type 'short int&' to an rvalue of type 'short int'
97 | if (!sparseCL[colB].findMIN(rowB + 1, rowE - 1, colE)) return false;
| ~~~~~^~~
rect.cpp:38:26: note: initializing argument 1 of 'short int SparseMIN::findMIN(short int&, short int&, short int&)'
38 | short findMIN(short &l, short &r, short &val)
| ~~~~~~~^
rect.cpp:98:38: error: cannot bind non-const lvalue reference of type 'short int&' to an rvalue of type 'short int'
98 | if (!sparseCR[colE].findMAX(rowB + 1, rowE - 1, colB)) return false;
| ~~~~~^~~
rect.cpp:69:25: note: initializing argument 1 of 'bool SparseMAX::findMAX(short int&, short int&, short int&)'
69 | bool findMAX(short &l, short &r, short &val)
| ~~~~~~~^
rect.cpp: In function 'llong count_rectangles(std::vector<std::vector<int> >)':
rect.cpp:126:9: warning: this 'while' clause does not guard... [-Wmisleading-indentation]
126 | while (st.size()) st.pop(); st.push(m + 1);
| ^~~~~
rect.cpp:126:37: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'while'
126 | while (st.size()) st.pop(); st.push(m + 1);
| ^~
rect.cpp:138:9: warning: this 'while' clause does not guard... [-Wmisleading-indentation]
138 | while (st.size()) st.pop(); st.push(0);
| ^~~~~
rect.cpp:138:37: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'while'
138 | while (st.size()) st.pop(); st.push(0);
| ^~
rect.cpp:153:9: warning: this 'while' clause does not guard... [-Wmisleading-indentation]
153 | while (st.size()) st.pop(); st.push(n + 1);
| ^~~~~
rect.cpp:153:37: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'while'
153 | while (st.size()) st.pop(); st.push(n + 1);
| ^~
rect.cpp:165:9: warning: this 'while' clause does not guard... [-Wmisleading-indentation]
165 | while (st.size()) st.pop(); st.push(0);
| ^~~~~
rect.cpp:165:37: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'while'
165 | while (st.size()) st.pop(); st.push(0);
| ^~
rect.cpp:181:29: warning: suggest parentheses around '+' inside '<<' [-Wparentheses]
181 | if ((1 << getLOG[i] + 1) < i) getLOG[i]++;
| ~~~~~~~~~~^~~