/*
TASK: abcd
LANG: C++
*/
#include<iostream>
#include<cmath>
#define PI (22/7.0)
using namespace std;
struct Point
{
  double x,y;
  Point(double _x=0, double _y=0)
  {
    x=_x; y=_y;
  }
  Point operator - (const Point B)
  {
    return Point(x-B.x, y-B.y);
  }
  Point operator + (const Point B)
  {
    return Point(x+B.x, y+B.y);
  }
};

Point Rotated(Point P, double angleInRadians)
{
  Point result;
  result.x = P.x*cos(angleInRadians) + P.y*sin(angleInRadians);
  result.y = -P.x*sin(angleInRadians) + P.y*cos(angleInRadians);
  return result;
}

Point RotatedYonly(Point P, double angleInRadians)
{
  Point result = P;
  //result.x = P.x*cos(angleInRadians) - P.y*sin(angleInRadians);
  result.y = -P.y*sin(angleInRadians) + P.x*cos(angleInRadians);
  return result;
}

double ABlen, BClen, CDlen;
Point ylines[3];

double finalArea = -1;
string outFinalArea;

double CrossProduct(Point vec1, Point vec2)
{
  double result = vec1.x*vec2.y - vec1.y*vec2.x;
  return result;
}

void CheckB()
{
  Point A,B,C,D;
  A = Point(0,0);
  B = Point(ABlen,0);
  C = Point(ABlen+BClen,0);
  D = Point(ABlen+BClen+CDlen,0);

  B.y = - B.x;
  C.y = C.x;
  //cout<<B.x<<" "<<B.y;
  //cout<<B.x<<" "<<B.y<<endl;
  double resultArea = abs( CrossProduct(B,C));

  if(finalArea < 0)
  {
    if(finalArea>resultArea)
    {
      finalArea = resultArea;
    }
  }
}

void CheckC()
{
  Point A,B,C,D;
  A = Point(0,0);
  B = Point(ABlen+BClen,0);
  C = Point(ABlen,0);
  D = Point(ABlen+BClen+CDlen,0);

  B.y = - B.x;
  C.y = C.x;

  double resultArea = abs( CrossProduct(B,C) );
  if(finalArea < 0)
  {
    finalArea = resultArea;
  }
  else if(finalArea > resultArea)
  {
    finalArea = resultArea;
  }
}

string DoubleToBwdString(double num)
{
  num+=0.00005;
  long long trunc = num * 10000;
  string res;
  res.resize(20);
  int i=0;
  while(trunc>0)
  {
    char resc;
    if(i!=4)
    {
      resc = trunc%10 +'0';
      trunc/=10;
    }
    else
      resc = '.';
    //cout<<trunc;
    res[i] = resc;

    i++;
  }
  return res;
}



int main()
{
  cin>>ABlen>>BClen>>CDlen;
  ylines[0] = Point(ABlen, 0);
  ylines[1] = Point(BClen, 0);
  ylines[2] = Point(CDlen, 0);
  if(ABlen != CDlen)
  {
    cout<<"---0\n";
  }
  else
  {
    CheckB();
    CheckC();
  }
  string result = DoubleToBwdString(finalArea);

  bool startToPrint = false;

  for(int i=result.size()-1; i>=0; i--)
  {
    if(isdigit(result[i]))
      startToPrint = true;
    if(startToPrint == true)
      cout<<result[i];
  }
  cout<<endl;
  return 0;
}