func_code_string: #include <bits/stdc++.h>   const int maxn = 150010;   const int INF = 0x3f3f3f3f;   using namespace std;   vector<int> V;   int a[maxn];   long long ans = 0;   int ok(int i) {     if (i & 1) return a[i] < a[i - 1] && a[i] < a[i + 1];     return a[i] > a[i + 1] && a[i] > a[i - 1];   }   int ok2(int i, int j) {     int f = 1;     swap(a[i], a[j]);     if (!ok(i)) f = 0;     if (!ok(j)) f = 0;     for (int k = 0; k < V.size(); k++) {       if (!ok(V[k])) f = 0;     }     swap(a[i], a[j]);     return f;   }   void fun(int idx, int n) {     for (int i = 1; i <= n; i++) {       if (ok2(idx, i)) {         ++ans;       }     }   }   int main() {     int n, i;     while (~scanf( %d , &n)) {       for (i = 1; i <= n; i++) {         scanf( %d , &a[i]);       }       a[0] = INF;       a[n + 1] = (n + 1) % 2 ? -INF : INF;       V.empty();       for (i = 1; i <= n; i++) {         if (!ok(i)) {           V.push_back(i);         }       }       if (V.size() > 6) {         printf( 0 n );         continue;       }       ans = 0;       for (i = 0; i < V.size(); i++) {         fun(V[i], n);         for (int j = i + 1; j < V.size(); j++) {           if (ok2(V[i], V[j])) {             --ans;           }         }       }       printf( %d n , ans);     }   }   