公式
A - クラス委員長の選出 / Election of the Class President 解説
by
A - クラス委員長の選出 / Election of the Class President 解説
by
physics0523
初心者の方へ
- AtCoder をはじめたばかりで何をしたらよいか分からない方は、まずは practice contest の問題A「Welcome to AtCoder」を解いてみてください。基本的な入出力の方法が載っています。
- また、プログラミングコンテストの問題に慣れていない方は、AtCoder Beginners Selection の問題をいくつか解いてみることをおすすめします。
- C++入門 AtCoder Programming Guide for beginners (APG4b) は、競技プログラミングのための C++ 入門用コンテンツです。
- Python入門 AtCoder Programming Guide for beginners (APG4bPython) は、競技プログラミングのための Python 入門用コンテンツです。
まず、 \(A\) の最大値を取ることで得票数の最大値 \(M\) を求めておきます。
これには for 文と if 文の組み合わせや、標準で実装されている最大値を取る機能を活用するなどの方法があります。
次に、最大数の票を得ているのが誰か (あるいは \(2\) 人以上いるのか) を判定します。例えば、以下の手順で求めることができます。
- 最初、答え \(res=-2\) としておく。
- \(i=1,2,\dots,N\) について、以下を繰り返す。
- もし \(A_i = M\) ならその生徒は最大数の票を得ている。
- もし \(res=-2\) なら \(res=i\) と置き換える。
- そうでないなら、生徒 \(res\) と生徒 \(i\) がどちらも最大数の票を得ていることが分かるため、 \(res=-1\) とする。
- もし \(A_i = M\) ならその生徒は最大数の票を得ている。
こちらも、 for 文と if 文の組み合わせなどで実装できます。
実装例 (C++):
#include<bits/stdc++.h>
using namespace std;
int main(){
int N;
cin >> N;
vector<int> A(N+1,0);
for(int i=1;i<=N;i++){ cin >> A[i]; }
int mxm=(*max_element(A.begin()+1,A.end()));
int res=-2;
for(int i=1;i<=N;i++){
if(mxm==A[i]){
if(res==-2){res=i;}
else{res=-1;}
}
}
cout << res << "\n";
return 0;
}
投稿日時:
最終更新:
