HackerRank Zalando CodeSprint: Minimal Wrapping Surface Area

,

https://www.hackerrank.com/contests/zalando-codesprint/challenges/wrappingsurfacearea

何故かconst ll inf = 1e8;と書いてしまっていたためにWAが生まれた。

problem

$W \times H \times L$の箱が$N$個ある。 これを適当に並べたときの、それら全体のbounding boxの表面積の最小値を答えよ。 ただし、箱やbounding boxは全て軸並行で、回転はできないものとする。

solution

Exhaustive search the $N \times N \times N$ space with trivial branching.

implementation

#include <iostream>
#include <cassert>
#define repeat_from(i,m,n) for (int i = (m); (i) < (n); ++(i))
typedef long long ll;
template <class T> bool setmin(T & l, T const & r) { if (not (r < l)) return false; l = r; return true; }
using namespace std;
const ll inf = 1e18+9;
int main() {
    int n; cin >> n;
    int x, y, z; cin >> x >> y >> z;
    ll ans = inf;
    repeat_from (i,1,n+1) {
        repeat_from (j,1,n+1) {
            repeat_from (k,1,n+1) {
                if (i*j*k < n) continue;
                ll nx = x * i;
                ll ny = y * j;
                ll nz = z * k;
                setmin(ans, 2 * (nx * ny + ny * nz + nz * nx));
            }
        }
    }
    cout << ans << endl;
    return 0;
}