solve :: Int -> Int -> Int
solve h w 
  | h == 1 || w == 1 = 1
  | otherwise =
    case (h `mod` 2 == 0, w `mod` 2 == 0) of
      (False, False) -> 
        let h1 = h `div` 2
            h2 = (h + 1) `div` 2
            w1 = w `div` 2
            w2 = (w + 1) `div` 2
        in
          h1 * w1 + h2 * w2
      (False, True) -> 
        (w `div` 2) * h
      (True, False) -> 
        (h `div` 2) * w
      (True, True) -> 
        (h `div` 2) * w


test :: IO ()
test = do
  print $ solve 7 11 == 4 * 6 + 3 * 5
  print $ solve 6 7 == 3 * 7
  print $ solve 7 6 == 3 * 7
  print $ solve 6 8 == 3 * 8
  print $ solve 1 1 == 1
  print $ solve 1 10 == 1
  print $ solve 3 1 == 1


main = do
  [h, w] <- map read . words <$> getLine
  print $ solve h w
