题目描述
奶牛在熊大妈的带领下排成了一条直队。
显然,不同的奶牛身高不一定相同……
现在,奶牛们想知道,如果找出一些连续的奶牛,要求最左边的奶牛 A 是最矮的,最右边的 B是最高的,且 B 高于 A 奶牛。中间如果存在奶牛,则身高不能和 A,B 奶牛相同。问这样的奶牛最多会有多少头?
从左到右给出奶牛的身高,请告诉它们符合条件的最多的奶牛数(答案可能是 0,2 但不会是1)。
输入格式
第一行一个正整数 N,表示奶牛的头数。
接下来 N 行,每行一个正整数,从上到下表示从左到右奶牛的身高 h[i] 。
输出格式
一行一个整数,表示最多奶牛数。
输入输出样例
输入 #1
5
1
2
3
4
1
输出 #1
4
说明/提示
样例解释
取第 1头到第 4头奶牛,满足条件且为最多。
c++
#include<bits/stdc++.h>
using namespace std;
int n;
const int maxn=1e5+5;
int a[maxn];
int l=1;
int cnt=0,cnted=0,ans=0;
int main()
{
cin>>n;
int ned=n; int r=ned;
for(int i=1;i<=n;i++)
{ cin>>a[i]; }
for(int i=1;i<n;i++)
{
if(a[r]==a[r-1])
{
//cout<<a[r]<<' '<<a[r-1]<<endl;
r=ned;
ans=0;
//cout<<"p1-2"<<endl;
} else if(a[l]==a[l+1])
{ l=i+1;
ans=0;
//cout<<"p1-1"<<endl;
}
else if(a[i+1]>=a[i]&&a[l]!=a[l+1]&&a[r]!=a[r-1]) {
ans++;
r=i+1;
//cout<<"p2"<<endl;
} else{
l=i+1;
r=ned;
//cout<<"p3"<<endl;
cnt=max(ans,cnted);
cnted=cnt;
ans=0;
}
if(i==n-1)
{
//cout<<"结算:"<<ans<<' '<<cnt<<endl; cnt=max(ans,cnt);
break;
}
}
cout<<(cnt==0?0:cnt+1);
return 0;
}
注释为我调试时使用
这段代码只能a三个点,其他全部wa
而且我自己输入的序列返回答案全部没问题
看不出来有啥问题,挺简单一贪心算法
求指导!