fork download
  1. #include <iostream>
  2.  
  3. template<typename T, typename Cmp>
  4. const T* find_adjacent(const T* fa, const T* la, Cmp cmp){
  5. if(fa + 2 >= la)
  6. return la;
  7.  
  8. const T* p = la - 2;
  9. while((p > fa) && !cmp(*(p - 1), *p, *(p + 1)))
  10. --p;
  11. return (p != fa) ? p : la;
  12. }
  13.  
  14. int main(void){
  15. const size_t N = 7;
  16. int A[N];
  17.  
  18. std::cout << "Enter num-" << N << ": ";
  19. for(size_t i = 0; i < N; ++i)
  20. std::cin >> A[i];
  21. std::cin.sync();
  22.  
  23. const int* p = find_adjacent(A, A + N, [] (int a, int m, int b){
  24. return ((a * b) == m);
  25. });
  26. if(p != A + N){
  27. std::cout << "index: " << (size_t)(p - &A[0]) << std::endl;
  28. std::cout << "value: " << *p << std::endl;
  29. } else
  30. std::cout << "not found!" << std::endl;
  31. return 0;
  32. }
Success #stdin #stdout 0s 3460KB
stdin
2 6 3 1 2 8 4
stdout
Enter num-7: index: 5
value: 8