けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

AtCoder ABC 110 A - Maximize the Formula (灰色, 100 点)

整理するのが難しい!

問題概要

3 個の 1 桁の整数  X, Y, Z が与えられる。

このうちの 2 個を選んで並べて 2 桁の整数を作る。さらに、その残りの 1 個の整数をそれに足す。

こうしてできる整数の最大値を求めよ。

解法

たとえば、3 個の整数が  2, 6, 9 のとき、最大の数を十の位に据えるとよい。この場合の最大値は

  •  96 + 2 = 98 または
  •  92 + 6 = 98

となる。 X, Y, Z のうちの最大値を十の位にすることさえ守れば、答えは一緒になる。具体的なことを言えば、仮に

 X \lt Y \lt Z

となるように  X, Y, Z を並び替えたとする (ソートするなどして)。このとき、答えは

 10Z + X + Y

となる。

#include <bits/stdc++.h>
using namespace std;

int main() {
    vector<int> A(3);
    for (int i = 0; i < 3; ++i) cin >> A[i];
    
    sort(A.begin(), A.end());
    cout << A[2] * 10 + A[0] + A[1] << endl;
}