2013国内予選 A. 整長方形
解法
- A問題だし、男は黙って全探索という感じでやってみた
- 答えの高さと幅は150を超えないので、あり得る答えを全通り試しても余裕
- 全列挙→ソート→upperbound もアリ
#include <iostream> using namespace std; int main(){ int h, w; while(cin >> h >> w && h){ int area = h*h+w*w; int resH = 200, resW = 200, resArea = 10000000; for(int i=1;i<=150;i++){ for(int j=i+1;j<=150;j++){ int newArea = i*i+j*j; if(area > newArea || (area == newArea && i <= h)) continue; if(newArea < resArea || (newArea == resArea && i < resH)){ resH = i; resW = j; resArea = newArea; } } } cout << resH << " " << resW << endl; } }