AOJ 1186: Integral Rectangles

問題

Integral Rectangles | Aizu Online Judge

長方形に 1. 対角線の長さが短いほうが小さい. 2. 対角線の長さが同じならば,高さの低いほうが小さい. という大小関係を定める

hxwより大きい横長の長方形で最小のものを求めよ

方針

全通り作って調べる

コード

#include <bits/stdc++.h>
 
using namespace std;
typedef long long ll;
 
#define rep(i, n) for(int i=0; i<(n); ++i)

int main(void){
    int h, w, diag;
    int bh, bw;
    while(cin >> h >> w && h) {
        int mind = numeric_limits<int>::max();
        bh = numeric_limits<int>::max();
        diag = h*h + w*w;
        for(int i=1; i<151; ++i) {
            for(int j=i+1; j<151; ++j) {
                int t = i*i+j*j;
                if(t > diag || (t==diag && i>h)) {
                    if(t < mind || (t==mind && i<bh)) {
                        mind = t;
                        bh = i;
                        bw = j;
                    }
                    break;
                }
            }
        }
        cout << bh << " " << bw << endl;
    }
}

http://judge.u-aizu.ac.jp/onlinejudge/review.jsp?rid=1892178

反省

条件2を考慮してなくて3WAした