#include <iostream>
using namespace std;
int findPeak(int a[],int low,int high,int n)
{
int mid=low+(high-low)/2;
if((mid==0 ||a[mid-1]<=a[mid]) && (mid==n-1|| a[mid+1]<=a[mid])) return mid;
else if(mid>0 && a[mid-1]>a[mid]){
return findPeak(a,low,mid-1,n);
}
else return findPeak(a,mid+1,high,n);
}
int main()
{
int a[]={0,6,8,5,7,9};
int n=6;
cout<<"Peak value is index:"<<findPeak(a,0,n-1,n)<<endl;
return 0;
}
ICAgCiNpbmNsdWRlIDxpb3N0cmVhbT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsgCgogaW50IGZpbmRQZWFrKGludCBhW10saW50IGxvdyxpbnQgaGlnaCxpbnQgbikKIHsKICAgICAKICAgaW50IG1pZD1sb3crKGhpZ2gtbG93KS8yOyAgCiAgICAgCiAgICAKICAgICBpZigobWlkPT0wIHx8YVttaWQtMV08PWFbbWlkXSkgJiYgKG1pZD09bi0xfHwgYVttaWQrMV08PWFbbWlkXSkpICAgcmV0dXJuIG1pZDsKIAogICAgZWxzZSBpZihtaWQ+MCAmJiBhW21pZC0xXT5hW21pZF0pewogICAgICAgIHJldHVybiBmaW5kUGVhayhhLGxvdyxtaWQtMSxuKTsKICAgIH0gCiAgZWxzZSByZXR1cm4gZmluZFBlYWsoYSxtaWQrMSxoaWdoLG4pOyAgIAogICAgIAogICAgIAogfQogIGludCBtYWluKCkKICAgIHsKICAgICAgICBpbnQgYVtdPXswLDYsOCw1LDcsOX07CiAgICAgICAgICAgICBpbnQgbj02OwogICAgICAgICAgICAgY291dDw8IlBlYWsgdmFsdWUgaXMgaW5kZXg6Ijw8ZmluZFBlYWsoYSwwLG4tMSxuKTw8ZW5kbDsKICAgICAgICAKICAgICAgICByZXR1cm4gMDsKICAgIH0=