実行時間制限: 2 sec / メモリ制限: 1024 MB / Difficulty: 54
問題概要
人の AtCoder ユーザーがいて、 人目のユーザ名は 、レートは である。ここで、以下の手順に従って「AtCoderじゃんけん2」を行ったとき、勝者となるユーザのユーザ名を出力せよ。
- 手順
- それぞれのユーザに、ユーザ名の辞書順に の番号を割り当てる。
- 人のレートの総和を として、番号 が割り当てられた人を勝者とする。
制約
- は相異なる英小文字列で、長さは3以上16以下。
- は整数で、 を満たす。
考察
手順に従っていけばよい。 人のユーザ名を入力から配列に格納したら、sort
で辞書順に並び替え。その後 を計算してS[T %
を出力する。
N]
コード
#include <bits/stdc++.h> using namespace std; using ll = long long; #define all(x) (x).begin(), (x).end() #define rep(i, start, end) for (auto i = (start); (i) < (end); (i)++) // ======================================== // int main() { int N; cin >> N; vector<string> S(N); vector<int> C(N); rep(i, 0, N) cin >> S[i] >> C[i]; sort(all(S)); ll T = 0; rep(i, 0, N) T += C[i]; cout << S[T % N] << endl; }
実装時間: 5分