#include <bits/stdc++.h>
using namespace std;
inline long long read() {
  register long long x = 0;
  char zf = 1;
  char ch;
  while (ch != '-' && !isdigit(ch)) ch = getchar();
  if (ch == '-') zf = -1, ch = getchar();
  while (isdigit(ch)) x = x * 10 + ch - '0', ch = getchar();
  return x * zf;
}
void write(long long y) {
  if (y < 0) putchar('-'), y = -y;
  if (y > 9) write(y / 10);
  putchar(y % 10 + '0');
}
inline void writeln(const long long y) {
  write(y);
  putchar('\n');
}
inline int min(const int x, const int y) { return x < y ? x : y; }
inline int max(const int x, const int y) { return x > y ? x : y; }
int i, j, k, m, n, x, y, z, cnt;
int a[1010];
double f[1010][1010];
int main() {
  n = read();
  m = read();
  for (register int i = 1; i <= n; i++) a[i] = read();
  for (register int i = 1; i <= n; i++)
    for (register int j = 1; j <= n; j++)
      if (a[i] > a[j]) f[i][j] = 1;
  while (m--) {
    x = read();
    y = read();
    f[x][y] = f[y][x] = 0.5;
    for (register int i = 1; i <= n; i++)
      if (i != x && i != y) {
        f[x][i] = f[y][i] = (f[x][i] + f[y][i]) / 2;
        f[i][x] = f[i][y] = 1 - f[x][i];
      }
  }
  double ans = 0;
  for (register int i = 1; i <= n - 1; i++)
    for (register int j = i + 1; j <= n; j++) ans += f[i][j];
  printf("%.7f", ans);
  return 0;
}
