文章
150
粉丝
0
获赞
558
访问
23.2k
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
while(cin >> n){
vector<int> dp(n);
for(int i=0;i<n;i++)
cin >> dp[i];
int maxDiff = 0; // 最大高度差
// 遍历每个可能的爬坡起点
for (int i = 0; i < n; ) {
// 找从i开始的连续上升序列
int j = i + 1;
// 连续上升:后一个 > 前一个
while (j < n && dp[j] > dp[j - 1]) {
j++;
}
// 如果长度至少为2,计算高度差
if (j - i >= 2) {
int diff = dp[j - 1] - dp[i]; // 最后一个 - 第一个
maxDiff = max(maxDiff, diff);
}
// 从j开始新的爬坡(注意:j可能等于i+1,即没有上升)
i = j;
}
cout << maxDiff << endl;
}
return 0;
}
登录后发布评论
暂无评论,来抢沙发