パナソニックプログラミングコンテスト2021(AtCoder Beginner Contest 231) B - Election
問題の要約
選挙が行われる。
N人が投票を行い,i(1<=i<=N)番目の人はSiという名前の候補者に投票した。
得票数が最大の候補者の名前を答えよ。なお,与えられる入力では得票数が最大の候補者は一意に定まる。
制約
1<=N<=100
入力
N
S1
...
SN
考え方
1,投票者の番号を1ずらす
1<=i<=N => 0<=i<=N-1
2,map<string,int>で投票数を管理する。
3,map<string,int>の最大の投票数を得た候補者の名前を出力する。
mapとは別にvector<string>で候補者の名前を管理しておく。
実際のプログラム
#include<iostream>
#include<map>
#include<string>
#include<vector>
using namespace std;
int main(){
int N;
cin >> N;
map<string,int> mp;
vector<string> S(N);
for(int i = 0; i < N; i++){
string Si;
cin >> Si;
S[i] = Si;
mp[Si]++;
}
string ans;
int max = -1;
for(int i = 0; i < N; i++){
if(max < mp[S[i]]){
ans = S[i];
max = mp[S[i]];
}
}
cout << ans << endl;
return 0;
}