ltrominoes.cpp: In function 'std::vector<std::vector<bool> > matmul(std::vector<std::vector<bool> >, std::vector<std::vector<bool> >)':
ltrominoes.cpp:53:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<bool> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
53 | for (int i = 0; i < a.size(); i++) result[i].resize(b.size());
| ~~^~~~~~~~~~
ltrominoes.cpp:54:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<bool> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
54 | for (int i = 0; i < a.size(); i++) for (int j = 0; j < b.size(); j++) result[i][j] = 0;
| ~~^~~~~~~~~~
ltrominoes.cpp:54:58: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<bool> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
54 | for (int i = 0; i < a.size(); i++) for (int j = 0; j < b.size(); j++) result[i][j] = 0;
| ~~^~~~~~~~~~
ltrominoes.cpp:55:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<bool> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
55 | for (int i = 0; i < a.size(); i++) for (int j = 0; j < b.size(); j++) for (int k = 0; k < b[0].size(); k++) result[i][k] = result[i][k] || (result[i][j] && result[j][k]);
| ~~^~~~~~~~~~
ltrominoes.cpp:55:58: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<bool> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
55 | for (int i = 0; i < a.size(); i++) for (int j = 0; j < b.size(); j++) for (int k = 0; k < b[0].size(); k++) result[i][k] = result[i][k] || (result[i][j] && result[j][k]);
| ~~^~~~~~~~~~
ltrominoes.cpp:55:93: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<bool>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
55 | for (int i = 0; i < a.size(); i++) for (int j = 0; j < b.size(); j++) for (int k = 0; k < b[0].size(); k++) result[i][k] = result[i][k] || (result[i][j] && result[j][k]);
| ~~^~~~~~~~~~~~~
ltrominoes.cpp: In function 'std::vector<std::vector<bool> > matexp(std::vector<std::vector<bool> >, int64_t)':
ltrominoes.cpp:63:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<bool> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
63 | for (int i = 0; i < a.size(); i++) result[i].resize(a.size());
| ~~^~~~~~~~~~
ltrominoes.cpp:65:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<bool> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
65 | for (int i = 0; i < a.size(); i++) for (int j = 0; j < a.size(); j++) result[i][j] = i == j;
| ~~^~~~~~~~~~
ltrominoes.cpp:65:62: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<bool> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
65 | for (int i = 0; i < a.size(); i++) for (int j = 0; j < a.size(); j++) result[i][j] = i == j;
| ~~^~~~~~~~~~