func_code_string: #include <bits/stdc++.h>   using namespace std;   template <typename T>   inline T abs(T a) {     return ((a < 0) ? -a : a);   }   template <typename T>   inline T sqr(T a) {     return a * a;   }   const int INF = (int)1E9 + 7;   const long double EPS = 1E-9;   const long double PI = 3.1415926535897932384626433832795;   int n, m;   pair<int, int> a[100];   int solve(int x, int y, int i) {     int ans = i;     if (y == m) x++, y = 0;     if (x == n) return ans;     ans = max(ans, solve(x, y + 1, i));     bool ok = true;     for (int j = 0; j < int(i); ++j) {       if (sqr(a[j].first - x) + sqr(a[j].second - y) == 5) {         ok = false;         break;       }     }     if (ok) {       a[i] = make_pair(x, y);       ans = max(ans, solve(x, y + 1, i + 1));     }     return ans;   }   long long solve(long long n, long long m) {     if (n < m) swap(n, m);     if (m > 2) return (n * m) / 2 + ((n * m) & 1);     if (m == 1) return n;     int k = (n - 2) / 4, rem = (n - 2) % 4;     int start = 4 + k * 4;     if (rem < 3) return start;     return start + 2;   }   int main() {     int n, m;     cin >> n >> m;     cout << solve(n, m) << endl;     return 0;   }   