判断三个状态,疑似正解
查看原帖
判断三个状态,疑似正解
1174843
yzm_lcoi_23楼主2024/9/26 14:37

写完觉得自己在瞎搞

#include<cstdio>
#include<iostream>
using namespace std;
const int N=1e5+2;
int t,n,m=1,a[N],p;
signed main(){
	ios::sync_with_stdio(0);
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	if(a[2]>a[1])	t=1;
	if(a[2]==a[1])	t=0,m=0;
	if(a[2]<a[1])	t=-1;
	for(int i=2;i<=n;i++){
		if(i==n){
			m+=(t!=0);
			break;
		}
		if(t==1){
			if(a[i+1]<a[i]){
				m++;
				t=-1;
			}
			if(a[i+1]==a[i]){
				p=t;
				t=0;
			}
		}
		else if(t==-1){
			if(a[i+1]>a[i]){
				m++;
				t=1;
			}
			if(a[i+1]==a[i]){
				p=t;
				t=0;
			}
		}
		else if(t==0){
			if(a[i+1]>a[i]){
				m+=(p!=1);
				t=1;
			}
			else if(a[i+1]<a[i]){
				m+=(p!=-1);
				t=-1;
			}
		}
	}
	printf("%d",m);
	return 0;
}

2024/9/26 14:37
加载中...