#include<cstdio> #include<cstring> #include<cctype> #include<cmath> #include<climits> #include<algorithm> #include<vector> #include<valarray> #include<string> #include<set> #include<map> #include<stack> #include<queue> using namespace std; #define rep(i,n) for(int i=0;i<n;i++) #define REP(i,n) for(int i=1;i<=n;i++) #define drep(i,n) for(int i=n-1;i>=0;i--) #define DREP(i,n) for(int i=n;i>0;i--) #define Rep(i,m,n) for(int i=m;i<n;i++) #define scani(a) scanf("%d",&a) #define scand(a) scanf("%lf",&a) #define scans(s) scanf("%s",s) #define printi(a) printf("%d",a) #define prints(s) printf("%s",s) #define LF printf("\n") #define pb push_back #define mp make_pair #define bs binary_search #define all(a) (a).begin(),(a).end() #define MOD 100000007 typedef long long LL; typedef vector<int> vi; typedef vector<vector<int> > vvi; typedef pair<double,double> pdd; typedef pair<int,int> pii; const double pi=acos(-1.0); double rad(double t){return t*pi/180.0;} int main(){ int R,C; LL ans; scani(R);scani(C); if(R==C){ if(R%2){ ans = ((LL)R/2)*((LL)R/2+1); }else{ ans = ((LL)R)*(LL)R/4-1; } }else{ if(R%2 && C%2){ ans = ((LL)C)*(R/2)+((LL)C/2); }else{ ans = (LL)R*(LL)C/2-1; } } printf("%lld\n",ans); return 0; }