#include <iostream>
#include <vector>
#include <algorithm>
// Function to find peak element of the array
int findPeakElement(std::vector<int> data)
{
auto peak = std::adjacent_find(data.begin(), data.end(), std::greater<>());
if (peak == data.end())
{
// to handle when array is sorted in ascending order,
// re-position to last element
--peak;
}
return *peak;
}
// main function
int main()
{
std::vector<int> data { 6, 8, 9, 14, 10, 12};
std::cout << "The peak element is " << findPeakElement(data);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKLy8gRnVuY3Rpb24gdG8gZmluZCBwZWFrIGVsZW1lbnQgb2YgdGhlIGFycmF5CmludCBmaW5kUGVha0VsZW1lbnQoc3RkOjp2ZWN0b3I8aW50PiBkYXRhKQp7CiAgICBhdXRvIHBlYWsgPSBzdGQ6OmFkamFjZW50X2ZpbmQoZGF0YS5iZWdpbigpLCBkYXRhLmVuZCgpLCBzdGQ6OmdyZWF0ZXI8PigpKTsKICAgIGlmIChwZWFrID09IGRhdGEuZW5kKCkpCiAgICB7CiAgICAgICAgLy8gdG8gaGFuZGxlIHdoZW4gYXJyYXkgaXMgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlciwKICAgICAgICAvLyByZS1wb3NpdGlvbiB0byBsYXN0IGVsZW1lbnQKICAgICAgICAtLXBlYWs7CiAgICB9CiAgICByZXR1cm4gKnBlYWs7Cn0KCi8vIG1haW4gZnVuY3Rpb24KaW50IG1haW4oKQp7CiAgICBzdGQ6OnZlY3RvcjxpbnQ+IGRhdGEgeyA2LCA4LCA5LCAxNCwgMTAsIDEyfTsKCiAgICBzdGQ6OmNvdXQgPDwgIlRoZSBwZWFrIGVsZW1lbnQgaXMgIiA8PCBmaW5kUGVha0VsZW1lbnQoZGF0YSk7CgogICAgcmV0dXJuIDA7Cn0=