#include #include #include #include using namespace std; const int MAXN = 40000 + 10; int a[MAXN]; int left_pos[MAXN], left_neg[MAXN], rht_pos[MAXN], rht_neg[MAXN]; int main() { int n, m; while (scanf("%d%d", &n, &m) != EOF) { int start; for (int i = 0; i < n; i++) { scanf("%d", &a[i]); if (a[i] == m) start = i; } memset(left_pos, 0, sizeof(left_pos)); memset(left_neg, 0, sizeof(left_neg)); memset(rht_pos, 0, sizeof(rht_pos)); memset(rht_neg, 0, sizeof(rht_neg)); int more = 0, less = 0; int left_eq = 0, rht_eq = 0; for (int i = start + 1; i < n; i++) { if (a[i] > a[start]) more++; else less++; if (more > less) rht_pos[more-less]++; else if (more < less) rht_neg[less-more]++; else rht_eq++; } more = 0, less = 0; for (int i = start - 1; i >= 0; i--) { if (a[i] > a[start]) more++; else less++; if (more > less) left_pos[more-less]++; else if (more < less) left_neg[less-more]++; else left_eq++; } int ans = (left_eq + 1) * (rht_eq + 1); for (int i = 1; i < MAXN; i++) { ans += left_neg[i] * rht_pos[i] + left_pos[i] * rht_neg[i]; } printf("%d\n", ans); } return 0; }