#include <cmath>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <string>



auto xuo3(double xa, double ya, double xb, double yb, double xc, double yc)
{
	auto dis = [](double x1, double y1, double x2, double y2) { return std::sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));};
	double AB = dis(xa, ya, xb, yb);
    double BC = dis(xb, yb, xc, yc);
    double CA = dis(xc, yc, xa, ya);
	double sides[3] = {AB, BC, CA};
    std::sort(sides, sides + 3);
    
    double a = sides[0];
    double b = sides[1];
    double c = sides[2];

    if (a * a + b * b == c * c) {
        return "Прямоугольный треугольник";
    } else if (a * a + b * b < c * c) {
        return "Тупоугольный треугольник";
    } else {
        return "Остроугольный треугольник";
    }
}




void xuo2( int x1, int  x2, int x3)
{
	int Pethagor =  x1^2 + x2^2;
	
	if (Pethagor == (x3^2))
	{
			std::cout << "Прямоугольный треугольник";

	} 
	else if (Pethagor < x3^2)
	{
		std::cout << "Тупоугольный треугольник";

	} else {
		std::cout << "Остроугольный треугольник";
	}
}





void xuo(double x1, double x2, double x3)
{
	if (x1 == x2 == x3) 
	{
		std::cout << "Равносторонний треугольник";

	} 
	else if (x1 == x2 || x1 == x3 || x2 == x3)
	{
		std::cout << "Равнобедренный треугольник";
	}
	else if (x1 != x2 && x1 != x3  && x2 == x3) 
	{
		std::cout << "Разносторонний треугольни";
	}
	else {
		std::cout << "никакой";
	}
}

bool xuo4(int x1, int  x2, int x3)
{
	if (x1 <= 0 || x2 <= 0 || x3 <= 0) 
	{
		return false;
	} 
	return (x1 +x2 > x3) || (x1 +x3 > x2) || (x2+x3 > x1);

}

bool xuo6(int a, int b, int c, int r, int s) {
    // Проверяем все возможные грани кирпича
    return (
        (a <= r && b <= s) || (a <= s && b <= r) ||  // Грань a x b
        (a <= r && c <= s) || (a <= s && c <= r) ||  // Грань a x c
        (b <= r && c <= s) || (b <= s && c <= r)     // Грань b x c
    );
}


bool xuo7(int r, int p, int q) {
    int diameter = 2 * r;
    return diameter <= std::min(p, q);
}












int main()
{
	int ui;
	double a,b,c;
	std::cout << "Введите стороны треугольника\n";
	std::cin >> a >> b >> c;
	std::cout << "Выберите режим (task1: 1 task2 :2 task3: 3 task4: 4 task6: 5 task7: 6 \n";
	std::cin >> ui;
	switch (ui) {
		case 1:
			xuo(a, b, c);
			break;
		case 2:
			xuo2(a, b, c);
			break;
		case 3:{
			    double xa, ya, xb, yb, xc, yc;
				std::cout << "Введите координаты вершин треугольника (A, B, C):\n";
				std::cout << "A(xa, ya): \n";
				std::cin >> xa >> ya;
				std::cout << "B(xb, yb): \n";
				std::cin >> xb >> yb;
				std::cout << "C(xc, yc): \n";	
				std::cin >> xc >> yc;
				std::string result = xuo3(xa, ya, xb, yb, xc, yc);
				std::cout << result << "\n";
				break;
		}
		case 4:{
				auto x =  xuo4(a,b,c);
				if (x)
				{
					std::cout << "Является Трегольником";
				}
				else {
					std::cout << "Не является";
				}
				break;
			   }
		case 5:{
				int a, b, c, r, s;
				std::cout << "Введите размеры кирпича (a, b, c): ";
				std::cin >> a >> b >> c;
				std::cout << "Введите размеры отверстия (r, s): ";
				std::cin >> r >> s;
		        if (xuo6(a, b, c, r, s)) 
				{
					std::cout << "Кирпич пройдет через отверстие." << std::endl;
				} else 
				{
					std::cout << "Кирпич не пройдет через отверстие." << std::endl;
				}
		case 6:
				int r1, p, q;
			    std::cout << "Введите радиус шара (r): ";
				std::cin >> r1;
				std::cout << "Введите диагонали ромба (p, q): ";
				std::cin >> p >> q;
				if (xuo7(r1, p, q)) {
					std::cout << "Шар пройдет через ромбообразное отверстие." << std::endl;
				} else {
					std::cout << "Шар не пройдет через ромбообразное отверстие." << std::endl;
				}


			   }

	}
}
