package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
)

var sc = bufio.NewScanner(os.Stdin)

// var rdr = bufio.NewReaderSize(os.Stdin, 1000000)

func nextLine() string {
	sc.Scan()
	return sc.Text()
}

func nextInt() int {
	i, _ := strconv.Atoi(nextLine())
	return i
}

func nextFloat() float64 {
	f, _ := strconv.ParseFloat(nextLine(), 64)
	return f
}

// func readLine() string {
// buf := make([]byte, 0, 1000000)
// for {
// l, p, e := rdr.ReadLine()
// if e != nil {
// panic(e)
// }
// buf = append(buf, l...)
// if !p {
// break
// }
// }
// return string(buf)
// }

func main() {
	sc.Split(bufio.ScanWords)
	r, c := int64(nextInt()), int64(nextInt())
	var ans int64
	ans = ((r * c) / 2) + ((r * c) % 2)
	fmt.Println(ans - 1)
}