#include
#include
using namespace std;
struct Triangle {
using len_t = const double;
static double perimeter(len_t a, len_t b, len_t c) {
return a + b + c;
}
static bool does_not_exist(len_t a, len_t b, len_t c) {
return argument(a, b, c) <= 0;
}
static double area(len_t a, len_t b, len_t c) {
return sqrt(argument(a, b, c));
}
private:
static double argument(len_t a, len_t b, len_t c) {
const auto p = perimeter(a, b, c) / 2.0;
return p * (p - a) * (p - b) * (p - c);
}
};
int main() {
cout << "a, b, c: ";
double a, b, c;
cin >> a >> b >> c;
if (Triangle::does_not_exist(a, b, c)) {
puts("There is no such triangle");
}
else {
const auto s = Triangle::area(a, b, c);
cout << "Area: " << s << '\n';
}
}