文章
2
粉丝
13
获赞
1
访问
624
佬们,只过了25%,用的单调队列,能帮忙看看错哪了吗?谢谢!
报错是报的wrong answer。谢谢!
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long n,a[1010];
while(cin>>n)
{
deque<int> d;
int ans=0;
for(int i=0;i<n;i++) cin>>a[i];
for(int i=0;i<n;i++)
{
if(d.empty()||d.back()<a[i])
{
d.push_back(a[i]);
int height=d.back()-d.front();
ans=max(ans,height);
}
else
{
while(!d.empty()&&d.back()>=a[i]) d.pop_back();
d.push_back(a[i]);
int height=d.back()-d.front();
ans=max(ans,height);
}
}
cout<<ans<<endl;
}
return 0;
}
登录后发布评论
你想复杂了,因为要连续的子段差值最大,所以直接递推就可以