#include <iostream>
template<typename T, typename Cmp>
const T* find_adjacent(const T* fa, const T* la, Cmp cmp){
if(fa + 2 >= la)
return la;
const T* p = la - 2;
while((p > fa) && !cmp(*(p - 1), *p, *(p + 1)))
--p;
return (p != fa) ? p : la;
}
int main(void){
const size_t N = 7;
int A[N];
std::cout << "Enter num-" << N << ": ";
for(size_t i = 0; i < N; ++i)
std::cin >> A[i];
std::cin.sync();
const int* p = find_adjacent(A, A + N, [] (int a, int m, int b){
return ((a * b) == m);
});
if(p != A + N){
std::cout << "index: " << (size_t)(p - &A[0]) << std::endl;
std::cout << "value: " << *p << std::endl;
} else
std::cout << "not found!" << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQ21wPgpjb25zdCBUKiBmaW5kX2FkamFjZW50KGNvbnN0IFQqIGZhLCBjb25zdCBUKiBsYSwgQ21wIGNtcCl7CglpZihmYSArIDIgPj0gbGEpCgkJcmV0dXJuIGxhOwoJCgljb25zdCBUKiBwID0gbGEgLSAyOwoJd2hpbGUoKHAgPiBmYSkgJiYgIWNtcCgqKHAgLSAxKSwgKnAsICoocCArIDEpKSkKCQktLXA7CglyZXR1cm4gKHAgIT0gZmEpID8gcCA6IGxhOwp9CgppbnQgbWFpbih2b2lkKXsKCWNvbnN0IHNpemVfdCBOID0gNzsKCWludCBBW05dOwoJCglzdGQ6OmNvdXQgPDwgIkVudGVyIG51bS0iIDw8IE4gPDwgIjogIjsKCWZvcihzaXplX3QgaSA9IDA7IGkgPCBOOyArK2kpCgkJc3RkOjpjaW4gPj4gQVtpXTsKCXN0ZDo6Y2luLnN5bmMoKTsKCgljb25zdCBpbnQqIHAgPSBmaW5kX2FkamFjZW50KEEsIEEgKyBOLCBbXSAoaW50IGEsIGludCBtLCBpbnQgYil7CgkJcmV0dXJuICgoYSAqIGIpID09IG0pOwoJfSk7CglpZihwICE9IEEgKyBOKXsKCQlzdGQ6OmNvdXQgPDwgImluZGV4OiAiIDw8IChzaXplX3QpKHAgLSAmQVswXSkgPDwgc3RkOjplbmRsOwoJCXN0ZDo6Y291dCA8PCAidmFsdWU6ICIgPDwgKnAgPDwgc3RkOjplbmRsOwoJfSBlbHNlCgkJc3RkOjpjb3V0IDw8ICJub3QgZm91bmQhIiA8PCBzdGQ6OmVuZGw7CglyZXR1cm4gMDsKfQ==