文字列を辞書順にソートする方法を確認しておこう!
問題概要
人のユーザーがいて、
人目の名前は
、レーティングは
である。
レーティングの総和を で割った余りを
としたとき、各ユーザーの名前のうち、辞書順で小さい順に
番目のものを求めよ。
解法
値 自体はすぐに求められる。
「 個の文字列を辞書順に並び替えるにはどうしたらよいか」が問題であるが、実は多くのプログラミング言語では、単純に
sort()
関数を用いるだけでよい!!
なぜなら、多くのプログラミング言語で、文字列の大小関係は、その辞書順で定義されているからだ!
コード
#include <bits/stdc++.h> using namespace std; int main() { int N; cin >> N; vector<string> name(N); vector<long long> val(N); long long S = 0; for (int i = 0; i < N; ++i) { cin >> name[i] >> val[i]; S += val[i]; } sort(name.begin(), name.end()); cout << name[S % N] << endl; }