#include <algorithm>
#include <iostream>
int main () {
const std::size_t board_size = 16;
char board [board_size] = {
0, 2, 0, 4,
2, 4, 8, 2,
0, 0, 8, 4,
2, 0, 0, 2
};
// Initialize a zero-filled vector of the appropriate size.
std::vector<int> zeroes(board_size);
// Fill the vector with index values (0 through board_size - 1).
std::iota(zeroes.begin(), zeroes.end(), 0);
// Remove the index values that do not correspond to zero elements in the board.
zeroes.erase(std::remove_if(zeroes.begin(), zeroes.end(), [&board] (int i) {
return board[i] != 0;
}), zeroes.end());
// Output the resulting contents of the vector.
for (int i : zeroes) {
std::cout << i << std::endl;
}
}
ICAgICNpbmNsdWRlIDxhbGdvcml0aG0+CiAgICAjaW5jbHVkZSA8aW9zdHJlYW0+CgogICAgaW50IG1haW4gKCkgewogICAgICBjb25zdCBzdGQ6OnNpemVfdCBib2FyZF9zaXplID0gMTY7CiAgICAgIGNoYXIgYm9hcmQgW2JvYXJkX3NpemVdID0gewogICAgICAgIDAsIDIsIDAsIDQsCiAgICAgICAgMiwgNCwgOCwgMiwKICAgICAgICAwLCAwLCA4LCA0LAogICAgICAgIDIsIDAsIDAsIDIKICAgICAgfTsKCiAgICAgIC8vIEluaXRpYWxpemUgYSB6ZXJvLWZpbGxlZCB2ZWN0b3Igb2YgdGhlIGFwcHJvcHJpYXRlIHNpemUuCiAgICAgIHN0ZDo6dmVjdG9yPGludD4gemVyb2VzKGJvYXJkX3NpemUpOwoKICAgICAgLy8gRmlsbCB0aGUgdmVjdG9yIHdpdGggaW5kZXggdmFsdWVzICgwIHRocm91Z2ggYm9hcmRfc2l6ZSAtIDEpLgogICAgICBzdGQ6OmlvdGEoemVyb2VzLmJlZ2luKCksIHplcm9lcy5lbmQoKSwgMCk7CgogICAgICAvLyBSZW1vdmUgdGhlIGluZGV4IHZhbHVlcyB0aGF0IGRvIG5vdCBjb3JyZXNwb25kIHRvIHplcm8gZWxlbWVudHMgaW4gdGhlIGJvYXJkLgogICAgICB6ZXJvZXMuZXJhc2Uoc3RkOjpyZW1vdmVfaWYoemVyb2VzLmJlZ2luKCksIHplcm9lcy5lbmQoKSwgWyZib2FyZF0gKGludCBpKSB7CiAgICAgICAgcmV0dXJuIGJvYXJkW2ldICE9IDA7CiAgICAgIH0pLCB6ZXJvZXMuZW5kKCkpOwoKICAgICAgLy8gT3V0cHV0IHRoZSByZXN1bHRpbmcgY29udGVudHMgb2YgdGhlIHZlY3Rvci4KICAgICAgZm9yIChpbnQgaSA6IHplcm9lcykgewogICAgICAgIHN0ZDo6Y291dCA8PCBpIDw8IHN0ZDo6ZW5kbDsKICAgICAgfQogICAgfQ==