Yuulis.log

Yuulis.log

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

【AtCoder】ABC 384 B - ARC Division | 茶コーダーが解くAtCoder

atcoder.jp

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

問題概要

AtCoder では、ARC が2つの division に分けられている。

  • ARC Div.1 では、コンテスト開始時のレーティングが  1600 以上  2799 以下の参加者がレーティング更新の対象である。
  • ARC Div.2 では、コンテスト開始時のレーティングが  1200 以上  2399 以下の参加者がレーティング更新の対象である。

高橋くんは、これから  N 回の ARC に参加することにした。はじめ、高橋くんのレーティングは  R である。  i の ARC は Div.  D_i で、高橋くんが取った成績は整数  A_i で表される。高橋くんが参加した ARC がレーティング更新の対象ならば、コンテスト終了後、高橋くんのレーティングに  A_i が加算される。

 N 回の ARC を終えたとき、高橋くんのレーティングがいくつになっているか求めよ。

制約

  • 入力はすべて整数。
  •  1\leq N\leq 100
  •  0\leq R\leq 4229
  •  1\leq D_i\leq 2
  •  -1000\leq A_i\leq 1000

考察

各 ARC の  D の値に応じて現在の高橋君のレーティングがレーティング更新対象かどうかを判定し、高橋君のレーティングをシミュレーションしていけばよい。

コード

#include <bits/stdc++.h>
using namespace std;

#define rep(i, start, end) for (auto i = (start); (i) < (end); (i)++)

// ======================================== //

int main()
{
    int N, R;
    cin >> N >> R;

    rep(i, 0, N) {
        int D, A;
        cin >> D >> A;

        if (D == 1) {
            if (1600 <= R && R <= 2799) {
                R += A;
            }
        }
        else if (D == 2) {
            if (1200 <= R && R <= 2399) {
                R += A;
            }
        }
    }

    cout << R << endl;
}

atcoder.jp

実装時間: 5分以内