この時代の一次予選は、まだちょっと難しかった
問題概要
3 個の整数 が与えられる。これらの整数のうち、2 番目に大きい値を求めよ。
制約
解法 (1)
最も楽だと思われる方法は、3 個の整数のうちの「最大値」と「最小値」を求めてあげる方法だと思われる。
3 個の整数は「最小値」「2 番目」「最大値」というように 3 つに分けることができるので、2 番目に大きい値は次のように求められる。
(3 個の整数の和) - (最大値) - (最小値)
コード
#include <bits/stdc++.h> using namespace std; int main() { int A, B, C; cin >> A >> B >> C; int mi = min({A, B, C}); int ma = max({A, B, C}); cout << (A + B + C) - (mi + ma) << endl; }
解法 (2)
もしソート関数 sort()
が使えるならば、それを使ってしまえば楽に求められる。
たとえば、サイズ 3 の配列 a
として入力を受け取り、次のようにすればよい。
- 配列
a
を小さい順にソートする - このとき、配列
a
は小さい順にa[0]
,a[1]
,a[2]
となるので、a[1]
が答え
コード
#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[1] << endl; }