Solução Iniciante Infomática - Semana 42

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:

D = \sqrt{L^2 + A^2 + P^2}

E basta checar que D \leq 2\cdot R, 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:

L^2 + A^2 + P^2 \leq 4\cdot R^2

Evitando assim o uso da raiz quadrada, embora esse problema específico também passe usando double.

Código para melhor entendimento:


// 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;
}

view raw

sedex.cpp

hosted with ❤ by GitHub