zuka
ABCをコツコツ解いていきます。
本記事は,管理人の競技プロ精進日記としてログを取ったものです。モチベーションを爆上げするために,積極的にアウトプットしていく作戦です。これから競技プログラミングを始めようと考えている人や,なんとなく敷居が高いと感じている人の参考になれば嬉しく思います。その他の記事は以下をご覧ください。
目次
本記事の概要
Atcoderで初心者用のコンテストとして開催されているAtcoder Beginner Contest(通称ABC)を解いていくものです。今回はABC134-C「Exception Handling」です。
ポイント
単なる例外記述の問題です。私自身,c++の配列に負の添字が利用できないことをここで知りました。最後の値にアクセスしたい場合は,要素数を利用してアクセスしましょう。
おさえるべき内容
例外のケースを正しく実装する方法
実装
#include <bits/stdc++.h>
#define _GLIBCXX_DEBUG
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
#define repi(i, a, b) for (int i = (int)(a); i < (int)(b); i++)
using namespace std;
int main(){
int N;
cin >> N;
vector<int> A(N);
rep(i, N){
int a;
cin >> a;
A[i] = a;
}
// 最大値と二番目に大きい値を求めるためにvectorをコピー
vector<int> B(N);
B = A;
// コピーしたものをソート
sort(B.begin(), B.end());
// 一番目に大きい値と二番目に大きい値
int max_value1, max_value2;
max_value1 = B[N-1];
max_value2 = B[N-2];
// もし二番目に大きい値が指定されれば最大値を出力する
// もし最大値が指定されれば二番目に大きい値を出力する
rep(i, N){
if (A[i]!=max_value1) cout << max_value1 << endl;
else cout << max_value2 << endl;
}
}
コメント