Yuulis.log

トンネルを抜けるとそこは参照エラーであった。

【AtCoder】ABC 354 B - AtCoder Janken 2 | 茶コーダーが解くAtCoder

atcoder.jp

実行時間制限: 2 sec / メモリ制限: 1024 MB / Difficulty: 54

問題概要

 N 人の AtCoder ユーザーがいて、  i 人目のユーザ名は  S_i 、レートは  C_i である。ここで、以下の手順に従って「AtCoderじゃんけん2」を行ったとき、勝者となるユーザのユーザ名を出力せよ。

  • 手順
  1. それぞれのユーザに、ユーザ名の辞書順に  0, 1, \cdots, N-1 の番号を割り当てる。
  2.  N 人のレートの総和を  T として、番号  T \mod N が割り当てられた人を勝者とする。

制約

  •  1 \leq N \leq 100
  •  S_i は相異なる英小文字列で、長さは3以上16以下。
  •  C_i は整数で、 1 \leq C_i \leq 4229 を満たす。

考察

手順に従っていけばよい。  N 人のユーザ名を入力から配列に格納したら、sortで辞書順に並び替え。その後  T を計算して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;
}

atcoder.jp

実装時間: 5分