func_code_string: #include <bits/stdc++.h>   using namespace std;   const int maxn = 150005;   const int INF = 0x3f3f3f3f, MOD = 1e9 + 7;   const double pi = 3.14159265359;   int n, t[maxn], ans, cnt;   vector<int> v, vp;   inline bool check(const vector<int> &vt) {     for (const int &i : vt) {       if (i == 0) {         if (t[i] >= t[i + 1])           return false;         else           continue;       } else if (i == n - 1) {         if (i % 2 == 0 && t[i] >= t[i - 1])           return false;         else if (i % 2 == 1 && t[i] <= t[i - 1])           return false;         else           continue;       } else if (i % 2 == 1 && (t[i] <= t[i - 1] || t[i] <= t[i + 1]))         return false;       else if (i % 2 == 0 && (t[i] >= t[i - 1] || t[i] >= t[i + 1]))         return false;     }     return true;   }   int main() {     scanf( %d , &n);     for (int i = 0; i < n; i++) scanf( %d , &t[i]);     if (t[0] < t[1])       vp.push_back(0);     else {       cnt++;       v.push_back(0);     }     if ((n - 1) % 2 == 0 && t[n - 1] < t[n - 2])       vp.push_back(n - 1);     else if ((n - 1) % 2 == 1 && t[n - 1] > t[n - 2])       vp.push_back(n - 1);     else {       cnt++;       v.push_back(n - 1);     }     for (int i = int(1); i < int(n - 1); i++) {       if (i % 2 == 0 && t[i] < t[i - 1] && t[i] < t[i + 1])         vp.push_back(i);       else if (i % 2 == 1 && t[i] > t[i - 1] && t[i] > t[i + 1])         vp.push_back(i);       else {         cnt++;         v.push_back(i);       }     }     if (v.size() > 6) {       printf( %d n , 0);       exit(0);     }     for (int i = 0; i < v.size() - 1; i++) {       for (int j = int(i + 1); j < int(v.size()); j++) {         swap(t[v[i]], t[v[j]]);         if (check(v)) ans++;         swap(t[v[i]], t[v[j]]);       }     }     for (const int &i : v) {       for (const int &j : vp) {         swap(t[i], t[j]);         vector<int> vt(v);         vt.push_back(j);         if (check(vt)) ans++;         swap(t[i], t[j]);       }     }     printf( %d n , ans);     return 0;   }   