← Home
package main

import (
	"fmt"
	"io"
	"os"
)

func main() {
	data, _ := io.ReadAll(os.Stdin)
	pos := 0
	nextInt := func() int {
		for pos < len(data) && (data[pos] < '0' || data[pos] > '9') {
			pos++
		}
		val := 0
		for pos < len(data) && data[pos] >= '0' && data[pos] <= '9' {
			val = val*10 + int(data[pos]-'0')
			pos++
		}
		return val
	}

	n := nextInt()
	m := nextInt()

	p := make([]int, n)
	for i := 0; i < n; i++ {
		p[i] = nextInt()
	}

	f := make([][]float64, n)
	for i := 0; i < n; i++ {
		f[i] = make([]float64, n)
		for j := 0; j < n; j++ {
			if p[i] > p[j] {
				f[i][j] = 1.0
			}
		}
	}

	for t := 0; t < m; t++ {
		a := nextInt() - 1
		b := nextInt() - 1

		for k := 0; k < n; k++ {
			if k == a || k == b {
				continue
			}
			v1 := (f[a][k] + f[b][k]) * 0.5
			v2 := (f[k][a] + f[k][b]) * 0.5
			f[a][k] = v1
			f[b][k] = v1
			f[k][a] = v2
			f[k][b] = v2
		}
		f[a][b] = 0.5
		f[b][a] = 0.5
	}

	ans := 0.0
	for i := 0; i < n; i++ {
		for j := i + 1; j < n; j++ {
			ans += f[i][j]
		}
	}

	fmt.Printf("%.10f\n", ans)
}