サイコロが1の目を下にした状態でマスの上にあるとき、隣接するマスを黒く塗るのに必要な転がす回数は最小で 回です。
そのため、ヘビのようにマスを移動しながら黒く塗ることで、最大で 個のマスを 回で塗ることができます。
ただし、 のときは例外です。
この場合右と左にしか転がすことができないため、 のときは最大で 個のマスを塗ることになります。
同様に、 のときは例外で 個のマスを塗ることになります。
下に解答例のコードを紹介します。
xxxxxxxxxx
using namespace std;
int main() {
long long H, W;
cin >> H >> W;
if (H == 1) {
cout << (W - 1) / 4 + 1 << " " << (W - 1) / 4 * 4 << endl;
} else if (W == 1) {
cout << (H - 1) / 4 + 1 << " " << (H - 1) / 4 * 4 << endl;
} else {
cout << H * W << " " << (H * W - 1) * 3 << endl;
}
return 0;
}