#include <algorithm>
#include <forward_list>
#include <iostream>
using namespace std;
int main() {
const forward_list<int> vec = {10, 4, 18, 7, 2, 10, 25, 30};
const auto start = find_if(cbegin(vec), cend(vec), [](const auto& i){ return i == 18 || i == 25; });
const auto target = find_if(start, cend(vec), [finish = *start == 18 ? 25 : 18](const auto& i){ return i == 7 || i == finish; });
const auto finish = *target == 7 ? find(target, cend(vec), *start == 18 ? 25 : 18) : cend(vec);
if(start == cend(vec)) {
cout << "Nether 18 nor 25 exist in vec\n";
} else if(target == cend(vec) || *target == 7 && finish == cend(vec)) {
cout << (*start == 18 ? "vec doesn't contain a 25 after the 18\n" : "vec doesn't contain a 18 after the 25\n");
} else if(finish == cend(vec)) {
cout << "vec doesn't contain a 7 between " << *start << " and " << *target << endl;
} else {
cout << "vec contains a 7 between " << *start << " and " << *finish << endl;
}
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGZvcndhcmRfbGlzdD4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkgewoJY29uc3QgZm9yd2FyZF9saXN0PGludD4gdmVjID0gezEwLCA0LCAxOCwgNywgMiwgMTAsIDI1LCAzMH07Cgljb25zdCBhdXRvIHN0YXJ0ID0gZmluZF9pZihjYmVnaW4odmVjKSwgY2VuZCh2ZWMpLCBbXShjb25zdCBhdXRvJiBpKXsgcmV0dXJuIGkgPT0gMTggfHwgaSA9PSAyNTsgfSk7Cgljb25zdCBhdXRvIHRhcmdldCA9IGZpbmRfaWYoc3RhcnQsIGNlbmQodmVjKSwgW2ZpbmlzaCA9ICpzdGFydCA9PSAxOCA/IDI1IDogMThdKGNvbnN0IGF1dG8mIGkpeyByZXR1cm4gaSA9PSA3IHx8IGkgPT0gZmluaXNoOyB9KTsKCWNvbnN0IGF1dG8gZmluaXNoID0gKnRhcmdldCA9PSA3ID8gZmluZCh0YXJnZXQsIGNlbmQodmVjKSwgKnN0YXJ0ID09IDE4ID8gMjUgOiAxOCkgOiBjZW5kKHZlYyk7CSAKCQoJaWYoc3RhcnQgPT0gY2VuZCh2ZWMpKSB7CgkJY291dCA8PCAiTmV0aGVyIDE4IG5vciAyNSBleGlzdCBpbiB2ZWNcbiI7Cgl9IGVsc2UgaWYodGFyZ2V0ID09IGNlbmQodmVjKSB8fCAqdGFyZ2V0ID09IDcgJiYgZmluaXNoID09IGNlbmQodmVjKSkgewoJCWNvdXQgPDwgKCpzdGFydCA9PSAxOCA/ICJ2ZWMgZG9lc24ndCBjb250YWluIGEgMjUgYWZ0ZXIgdGhlIDE4XG4iIDogInZlYyBkb2Vzbid0IGNvbnRhaW4gYSAxOCBhZnRlciB0aGUgMjVcbiIpOwoJfSBlbHNlIGlmKGZpbmlzaCA9PSBjZW5kKHZlYykpIHsKCQljb3V0IDw8ICJ2ZWMgZG9lc24ndCBjb250YWluIGEgNyBiZXR3ZWVuICIgPDwgKnN0YXJ0IDw8ICIgYW5kICIgPDwgKnRhcmdldCA8PCBlbmRsOwoJfSBlbHNlIHsKCQljb3V0IDw8ICJ2ZWMgY29udGFpbnMgYSA3IGJldHdlZW4gIiA8PCAqc3RhcnQgPDwgIiBhbmQgIiA8PCAqZmluaXNoIDw8IGVuZGw7Cgl9Cn0=