#include<iostream> using namespace std; const int N(100005); int a[N]; int solve(int n) { if (n==1||n==2&&a[0]==a[1]) return 1; if (n==2) return 2; int ans(1),k=1; while (a[k]==a[k-1]&&k<n) k++; //去掉数列前面多余的相同数据 bool flag=(a[k]>a[k-1]); for (int i=k+1;i<n;i++) { if (a[i]==a[i-1]) continue; if ((a[i]>a[i-1])!=flag) ans++,flag=!flag; } ans++; return ans; } int main() { //ifstream cin("flower.in"); //ofstream cout("flower.out"); int n; cin>>n; for (int i=0;i<n;i++) cin>>a[i]; int ans(0); cout<<solve(n)<<endl; return 0; } /************************************************************** Problem: 2328 User: admin Language: C++ Result: Accepted Time:86 ms Memory:2464 kb ****************************************************************/