Solução de Frederico Bulhões
Para resolver esse problema vamos considerar o seguinte: a solução ideal existe caso centralizarmos a caixa na esfera. Então o valor da maior diagonal da caixa será, usando a formula de pitagoras:
E basta checar que , que o valor da maior diagonal seja menor que o diâmetro da esfera.
Para não termos problemas de precisão usando double podemos em vez disso chechar que:
Evitando assim o uso da raiz quadrada, embora esse problema específico também passe usando double.
Código para melhor entendimento:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// solucao de Davi Gabriel | |
#include <bits/stdc++.h> | |
using namespace std; | |
int main() { | |
int l, a, p, r; | |
cin >> l >> a >> p >> r; | |
int d1 = pow(l/2, 2); | |
int d2 = pow(a/2, 2); | |
int d3 = pow(p/2, 2); | |
int d = sqrt(d1 + d2 + d3); | |
if(d > r){ | |
cout << "N\n"; | |
} | |
else{ | |
cout << "S\n"; | |
} | |
return 0; | |
} |