【AtCoder】ABC 448 A - chmin

A - chminatcoder.jp favicon

実行時間制限: 2 sec / メモリ制限: 1024 MiB / Difficulty: 13 / NoviSteps: 7Q / 配点: 100 点

問題概要

長さ NN の整数列 AA と整数 XX が与えられる。 i=1,2,,Ni=1,2,\dots,N の順に以下の処理を行え。

  • もし Ai<XA_i<X なら、 X=AiX=A_i に更新した上で1を出力する。
  • そうでないなら0を出力する。

制約

  • 入力は全て整数
  • 1N,X,Ai1001 \le N,X,A_i \le 100

考察

問題のタイトルにあるように、これはいわゆるchmin関数の処理である。

私はchminを以下のようにbool型が返るように実装しているので、chmin(X, A_i)trueならば1を出力し、そうでないなら0を出力すればよい。

CPP
1.template <typename T>
2.inline bool chmin(T &a, T b) { return ((a > b) ? (a = b, true) : (false)); }

実装例

CPP
1.#include <bits/stdc++.h>
2.using namespace std;
3.
4.#define rep(i, start, end) for (auto i = (start); (i) < (end); (i)++)
5.
6.template <typename T>
7.inline bool chmin(T &a, T b) { return ((a > b) ? (a = b, true) : (false)); }
8.
9.// ======================================== //
10.
11.int main()
12.{
13. int N, X;
14. cin >> N >> X;
15. vector<int> A(N);
16. rep(i, 0, N) cin >> A[i];
17.
18. rep(i, 0, N)
19. {
20. if (chmin(X, A[i]))
21. {
22. cout << 1 << endl;
23. }
24. else
25. {
26. cout << 0 << endl;
27. }
28. }
29.
30. return 0;
31.}
Submission #73885158 - AtCoder Beginner Contest 448atcoder.jp favicon

実装時間: 5 分以内

コメント

テンプレートがある人は貼るだけになりそう。