のときは、 と を入れ替えて考えても問題ありません。以下、 の場合について考えます。
のときは、マス から動くことができません。したがって、答えは です。
のときは、 を非負整数として、マス もしくはマス と表されるマスにのみ到達できます。
したがって、答えは です。
のときは、マス 以外のすべてのマスに到達できます。
したがって、答えは です。
のときは、すべてのマスに到達できます。したがって、答えは です。以下、そのことを示します。
の場合に、すべてのマスに到達できることが確かめられます。これにより、「 マスの領域のうちどれか マスに到達できれば、残りのマスすべてに到達できる」ということが言えます。
のとき、マス目全体を マスの領域の重ね合わせで埋め尽くすことが可能であるため、すべてのマスに到達できます。
xxxxxxxxxx
using namespace std;
long long ceil(long long a, long long b) {
return (a + b - 1) / b;
}
int main() {
int hh, ww;
cin >> hh >> ww;
long long h = min(hh, ww);
long long w = max(hh, ww);
if (h == w && h == 3) {
cout << 8 << endl;
} else if (h == 1) {
cout << 1 << endl;
} else if (h == 2) {
cout << ceil(w, 2) << endl;
} else {
cout << h * w << endl;
}
return 0;
}
xxxxxxxxxx
H, W = map(int, input().split())
if H > W:
H, W = W, H
if H == 1:
print(1)
elif H == 2:
print((W + 1) // 2)
elif H == 3 and W == 3:
print(8)
else:
print(H * W)