Toy と帽子と ADP BE

主にプログラミングに関わる話をゆるくエモくやっていきます

A. Minimal Square (Codeforces Round #644 Div. 3)

問題

https://codeforces.com/contest/1360/problem/A

問題概要

2つの辺がaとbの長方形2つを、はみ出さずに敷き詰めることができる正方形の面積を求めよ。

考察

わざわざはみ出させても得をしませんから、2つの長方形は同じ長さの辺が揃うように並べて2倍の面積の長方形を作るが最適です。またこのとき、長い方の辺を揃えて短い方の辺が2倍になる方が明らかに得です。

そして、長くなる方の辺が正方形の一辺となります。

実装的には、aとbの大小で長さの計算を場合分けする、必要ならswapしてa<bとして計算する、両方計算して小さい方を取る、など色んな方法で辺の長さを算出することができます。

答えるのは面積なので、掛け合わせるのを忘れないようにしましょう。

#include <bits/stdc++.h>
using namespace std;
 
int main() {
    int t;
    cin >> t;
    while (t--) {
        int a, b;
        cin >> a >> b;
        if (a > b) swap(a, b);
        int x = max(a * 2, b);
        cout << x * x << endl;
    }
}