AOJ - Problem 0159 : The Best Body
BMIが22に一番近い人の番号を出力する問題です。
入力では身長が[cm]で与えられるので[m]に変換するのを忘れないようにしましょう。
#include <iostream> #include <cmath> #include <algorithm> using namespace std; int main(){ int n; while( cin >> n , n ){ double BMI[1000001]; for(int i=0 ; i < 1000001 ; i++ ){ BMI[i] = -1; } for(int i=0 ; i < n ; i++ ){ int id,h,w; cin >> id >> h >> w; BMI[id] = fabs( 22.0 - (double) w / ( (h/100.0)*(h/100.0) ) ); } double m = 1000.0; for(int i=0 ; i < 1000001 ; i++ ){ if( BMI[i] != -1 ) m = min( m , BMI[i] ); } for(int i=0 ; i < 1000001 ; i++ ){ if( BMI[i] == m ){ cout << i << endl; break; } } } }