#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 int a[] = { 18, 25 };
const auto start = find_first_of(cbegin(vec), cend(vec), cbegin(a), cend(a));
const int b[] = { *start == *cbegin(a) ? *crbegin(a) : *cbegin(a), 7 };
const auto target = find_first_of(start, cend(vec), cbegin(b), cend(b));
const auto finish = *target == *crbegin(b) ? find(target, cend(vec), *cbegin(b)) : cend(vec);
if(start == cend(vec)) {
cout << "Nether " << *cbegin(a) << " nor " << *crbegin(a) << " exist in vec\n";
} else if(target == cend(vec) || *target == *crbegin(b) && finish == cend(vec)) {
cout << "vec doesn't contain a " << *cbegin(b) << " after the " << *start << endl;
} 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;
}
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGZvcndhcmRfbGlzdD4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkgewoJY29uc3QgZm9yd2FyZF9saXN0PGludD4gdmVjID0gezEwLCA0LCAxOCwgNywgMiwgMTAsIDI1LCAzMH07CiAgICBjb25zdCBpbnQgYVtdID0geyAxOCwgMjUgfTsKICAgIGNvbnN0IGF1dG8gc3RhcnQgPSBmaW5kX2ZpcnN0X29mKGNiZWdpbih2ZWMpLCBjZW5kKHZlYyksIGNiZWdpbihhKSwgY2VuZChhKSk7CiAgICBjb25zdCBpbnQgYltdID0geyAqc3RhcnQgPT0gKmNiZWdpbihhKSA/ICpjcmJlZ2luKGEpIDogKmNiZWdpbihhKSwgNyB9OwogICAgY29uc3QgYXV0byB0YXJnZXQgPSBmaW5kX2ZpcnN0X29mKHN0YXJ0LCBjZW5kKHZlYyksIGNiZWdpbihiKSwgY2VuZChiKSk7CiAgICBjb25zdCBhdXRvIGZpbmlzaCA9ICp0YXJnZXQgPT0gKmNyYmVnaW4oYikgPyBmaW5kKHRhcmdldCwgY2VuZCh2ZWMpLCAqY2JlZ2luKGIpKSA6IGNlbmQodmVjKTsJIAoJCglpZihzdGFydCA9PSBjZW5kKHZlYykpIHsKCQljb3V0IDw8ICJOZXRoZXIgIiA8PCAqY2JlZ2luKGEpIDw8ICIgbm9yICIgPDwgKmNyYmVnaW4oYSkgPDwgIiBleGlzdCBpbiB2ZWNcbiI7Cgl9IGVsc2UgaWYodGFyZ2V0ID09IGNlbmQodmVjKSB8fCAqdGFyZ2V0ID09ICpjcmJlZ2luKGIpICYmIGZpbmlzaCA9PSBjZW5kKHZlYykpIHsKCQljb3V0IDw8ICJ2ZWMgZG9lc24ndCBjb250YWluIGEgIiA8PCAqY2JlZ2luKGIpIDw8ICIgYWZ0ZXIgdGhlICIgPDwgKnN0YXJ0IDw8IGVuZGw7Cgl9IGVsc2UgaWYoZmluaXNoID09IGNlbmQodmVjKSkgewoJCWNvdXQgPDwgInZlYyBkb2Vzbid0IGNvbnRhaW4gYSA3IGJldHdlZW4gIiA8PCAqc3RhcnQgPDwgIiBhbmQgIiA8PCAqdGFyZ2V0IDw8IGVuZGw7Cgl9IGVsc2UgewoJCWNvdXQgPDwgInZlYyBjb250YWlucyBhIDcgYmV0d2VlbiAiIDw8ICpzdGFydCA8PCAiIGFuZCAiIDw8ICpmaW5pc2ggPDwgZW5kbDsKCX0KfQ==