Official
C - Minimize Abs 1 Editorial
by
C - Minimize Abs 1 Editorial
by
nok0
場合分けにより \(A_i\) に対する答えを求めましょう。
\(A_i\) が \(L\) 以上 \(R\) 未満のときは、\(A_i\) が答えです。
\( A_i\) が \(L\) 未満のときは、\(L\) が答えです。
\(A_i\) が \(R\) 以上のときは、\(R\) が答えです。
後は、これを if 文を用いて実装することで AC を得ることができます。
if 文を用いない方針についても記します。求める答えは、 \(\min{(\max{(L,A_i)},R)}\) とあらわすことができます。多くの言語では max, min が関数としてあるので、それを用いるとより簡単に実装できます。
更に、C++では \(\min{(\max{(L,A_i)},R)}\) 自体が関数として標準ライブラリに存在します。 std::clamp(A_i,L,R)
を用いると良いです。
実装例(C++):
#include <bits/stdc++.h>
using namespace std;
#define rep(i, x) for(int i = 0; i < (x); i++)
int main() {
int n, l, r;
cin >> n >> l >> r;
vector<int> a(n);
rep(i, n) cin >> a[i];
rep(i, n) cout << clamp(a[i], l, r) << " \n"[i == n - 1];
}
posted:
last update: