using System;
using System.Collections.Generic;
using System.Text;

class Program
{
    public void Proc()
    {
        Reader.IsDebug = false;
        string[] inpt = Reader.ReadLine().Split(' ');

        long numR = long.Parse(inpt[0]);
        long numC = long.Parse(inpt[1]);


        long tmp = numR * numC;
        long ans = tmp / 2 + (tmp % 2) - 1;

        if (numR == numC)
        {
            ans = tmp / 4 + Math.Min(1, (tmp % 4)) - 1;
        }
        Console.WriteLine(ans.ToString("###########################################0"));
    }




    

    public class Reader
    {
        public static bool IsDebug = true;
        private static String PlainInput = @"


1000000000 1000000000


 
";
        private static System.IO.StringReader Sr = null;
        public static string ReadLine()
        {
            if (IsDebug)
            {
                if (Sr == null)
                {
                    Sr = new System.IO.StringReader(PlainInput.Trim());
                }
                return Sr.ReadLine();
            }
            else
            {
                return Console.ReadLine();
            }
        }
        public static int[] GetInt(char delimiter = ' ', bool trim = false)
        {
            string inptStr = ReadLine();
            if (trim)
            {
                inptStr = inptStr.Trim();
            }
            string[] inpt = inptStr.Split(delimiter);
            int[] ret = new int[inpt.Length];
            for (int i = 0; i < inpt.Length; i++)
            {
                ret[i] = int.Parse(inpt[i]);
            }
            return ret;
        }
    }
    static void Main()
    {
        Program prg = new Program();
        prg.Proc();
    }
}