10
1 1 3 -1 1 1 0 -1 -3 3
No
#1最后一个点应该可以指改一个点就过的,但为什么是No?
如果数据没问题,那么能帮忙调一下代码吗
#include<bits/stdc++.h>
using namespace std;
int a[100010],b[100010],n,c[100010];
int main()
{
while(cin>>n)
{
int ans=0;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<n;i++)
{
if(a[i]<a[i+1])
b[i]=1;
if(a[i]>a[i+1])
b[i]=2;
if(a[i]==a[i+1])
b[i]=3;
}
for(int i=2;i<=n;i++)
{
if(b[i]==b[i-1]&&b[i]!=3)
{
ans++;
c[i]=b[i];
}
}
if(ans>2)
cout<<"No";
else if(ans<2)
cout<<"Yes";
else
{
for(int i=4;i<n;i++)
if((c[i]!=c[i-2]&&c[i]!=0&&c[i-2]!=0)||(c[i]==c[i-1]&&c[i]!=0))
ans--;
if(ans>1)
cout<<"No";
else
cout<<"Yes";
}
cout<<endl;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
}
return 0;
}