简单贪心
数有几个波动
分别从波峰与波谷开始
#include<bits/stdc++.h>
#define re return
#define inc(i,l,r) for(int i=l;i<=r;++i)
#define dec(i,l,r) for(int i=l;i>=r;--i)
using namespace std;
template<typename T>inline void rd(T&x)
{
char c;bool f=0;
while((c=getchar())<'0'||c>'9')if(c=='-')f=1;
x=c^48;
while((c=getchar())>='0'&&c<='9')x=x*10+(c^48);
if(f)x=-x;
}
const int maxn=100005;
int last,now,ans,n,f,ff;
int main()
{
rd(n);
rd(last);
ans=1;int k=1;
inc(i,2,n)
{
rd(now);
if(f==1&&now>last)++ans,f=0;
else if(f==0&&now<last)++ans,f=1;
if(ff==1&&now<last)++k,ff=0;
else if(ff==0&&now>last)++k,ff=1;
last=now;
}
printf("%d",max(ans,k));
re 0;
}