80pts求调+数据疑似有误
查看原帖
80pts求调+数据疑似有误
1023246
wyh12623楼主2025/7/22 09:42
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;
}
2025/7/22 09:42
加载中...