题目描述
如果一个序列a存在一个下标,该下标左边和右边都比该数小,把该下标称之为k,则a[1]<=a[2]<=...a[k]>=..a[n-2]>=a[n-1]>=a[n],k则被称为该序列的顶,该序列被称为‘峰’。
现在给你一个序列a,保证a是一个‘峰’,请你输出它的顶.
1n10000.
#includeusing namespace std; int n,a[10005],mid=-1; int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); int l=1,r=n; while(l =a[md-1]&&a[md]>=a[md+1]){ mid=md; break; } else if(a[md]>=a[md-1]&&a[md]<=a[md+1]) l=md; else r=md; } printf("%d",mid); return 0; }
难度加大
请你判断该序列是不是一个‘峰’,如果是,输出顶;否则,输出-1.
#includeusing namespace std; int n,a[10005],mid=-1; void solve(){ int l=1,r=n; while(l =a[md-1]&&a[md]>=a[md+1]){ mid=md; break; } else if(a[md]>=a[md-1]&&a[md]<=a[md+1]) l=md; else r=md; } printf("%d",mid); } int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); int p=1; while(a[p]<=a[p+1]) p++; while(a[p]>=a[p+1]&&p



