#include <algorithm>
#include <list>
#include <string>
#include <iostream>
std::size_t countSpaceSurroundBySpace(const std::list<std::list<char>>& l)
{
if (l.size() < 3u) {
return 0u;
}
auto it1 = l.cbegin();
auto it2 = std::next(it1);
auto it3 = std::next(it2);
std::size_t count = 0u;
for (; it3 != l.end(); ++it1, ++it2, ++it3) {
std::list<char>::const_iterator its[5] = {
it1->begin(),
it2->begin(),
it2->begin(),
it2->begin(),
it3->begin()
};
if (its[0] == it1->end()) { continue; }
++its[0];
if (its[2] == it2->end()) { continue; }
++its[2];
++its[3];
if (its[3] == it2->end()) { continue; }
++its[3];
if (its[4] == it3->end()) { continue; }
++its[4];
for (; its[0] != it1->end() && its[3] != it2->end() && its[4] != it3->end();) {
if (std::all_of(std::begin(its), std::end(its), [](std::list<char>::const_iterator it) { return *it == ' '; })) {
++count;
}
for (auto& it : its) {
++it;
}
}
}
return count;
}
int main()
{
std::list<std::list<char>> l = {
{' ', ' ', 'H', 'H', 'H'},
{'H', 'H', ' ', ' ', 'H', 'H'},
{'H', ' ', ' ', ' ', 'H', ' '},
{' ', 'H', ' ', ' ', 'H'}
};
std::cout << countSpaceSurroundBySpace(l) << std::endl;
return 0;
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGxpc3Q+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDxpb3N0cmVhbT4KCnN0ZDo6c2l6ZV90IGNvdW50U3BhY2VTdXJyb3VuZEJ5U3BhY2UoY29uc3Qgc3RkOjpsaXN0PHN0ZDo6bGlzdDxjaGFyPj4mIGwpCnsKICAgIGlmIChsLnNpemUoKSA8IDN1KSB7CiAgICAgICAgcmV0dXJuIDB1OwogICAgfQogICAgYXV0byBpdDEgPSBsLmNiZWdpbigpOwogICAgYXV0byBpdDIgPSBzdGQ6Om5leHQoaXQxKTsKICAgIGF1dG8gaXQzID0gc3RkOjpuZXh0KGl0Mik7CiAgICBzdGQ6OnNpemVfdCBjb3VudCA9IDB1OwoKICAgIGZvciAoOyBpdDMgIT0gbC5lbmQoKTsgKytpdDEsICsraXQyLCArK2l0MykgewogICAgICAgIHN0ZDo6bGlzdDxjaGFyPjo6Y29uc3RfaXRlcmF0b3IgaXRzWzVdID0gewogICAgICAgICAgICBpdDEtPmJlZ2luKCksCiAgICAgICAgICAgIGl0Mi0+YmVnaW4oKSwKICAgICAgICAgICAgaXQyLT5iZWdpbigpLAogICAgICAgICAgICBpdDItPmJlZ2luKCksCiAgICAgICAgICAgIGl0My0+YmVnaW4oKQogICAgICAgIH07CiAgICAgICAgaWYgKGl0c1swXSA9PSBpdDEtPmVuZCgpKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgKytpdHNbMF07CiAgICAgICAgaWYgKGl0c1syXSA9PSBpdDItPmVuZCgpKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgKytpdHNbMl07CiAgICAgICAgKytpdHNbM107CiAgICAgICAgaWYgKGl0c1szXSA9PSBpdDItPmVuZCgpKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgKytpdHNbM107CiAgICAgICAgaWYgKGl0c1s0XSA9PSBpdDMtPmVuZCgpKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgKytpdHNbNF07CiAgICAgICAgZm9yICg7ICBpdHNbMF0gIT0gaXQxLT5lbmQoKSAmJiBpdHNbM10gIT0gaXQyLT5lbmQoKSAmJiBpdHNbNF0gIT0gaXQzLT5lbmQoKTspIHsKICAgICAgICAgICAgaWYgKHN0ZDo6YWxsX29mKHN0ZDo6YmVnaW4oaXRzKSwgc3RkOjplbmQoaXRzKSwgW10oc3RkOjpsaXN0PGNoYXI+Ojpjb25zdF9pdGVyYXRvciBpdCkgeyByZXR1cm4gKml0ID09ICcgJzsgfSkpIHsKICAgICAgICAgICAgICAgICsrY291bnQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yIChhdXRvJiBpdCA6IGl0cykgewogICAgICAgICAgICAgICAgKytpdDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBjb3VudDsKfQoKCmludCBtYWluKCkKewogICAgc3RkOjpsaXN0PHN0ZDo6bGlzdDxjaGFyPj4gbCA9IHsKICAgICAgICB7JyAnLCAnICcsICdIJywgJ0gnLCAnSCd9LAogICAgICAgIHsnSCcsICdIJywgJyAnLCAnICcsICdIJywgJ0gnfSwKICAgICAgICB7J0gnLCAnICcsICcgJywgJyAnLCAnSCcsICcgJ30sCiAgICAgICAgeycgJywgJ0gnLCAnICcsICcgJywgJ0gnfQogICAgfTsKCiAgICBzdGQ6OmNvdXQgPDwgY291bnRTcGFjZVN1cnJvdW5kQnlTcGFjZShsKSA8PCBzdGQ6OmVuZGw7CgogICAgcmV0dXJuIDA7Cn0K