【C++】ABC265 B問題 Explore

未分類

ABC265のB問題 Exploreを解説します。

問題のポイント

  1. 持ち時間Tがint型に収まらないので、long long 型にしましょう。
  2. ボーナスを与える処理は部屋に着いた直後にしましょう。

入力例

4 1 10
5 7 5
2 10

回答例

#include< bits/stdc++.h >
using namespace std;
#define rep(i, n) for (int i = 0; i < (n); ++i)

int main() {
    int n, m;
    long long t;                // 注意: int型で収まらない
    cin >> n >> m >> t;         // 入力の受け取り
    vector< int > a(n-1);
    rep(i, n-1) cin >> a[i];    // 入力の受け取り

    map< int, int > mp;
    rep(i, m) {
        int x, y;
        cin >> x >> y;
        x--;
        mp[x] += y;             // 受け取った入力をmap連想配列に格納
    }

    for (int i = 0; i < n-1; i++) {
        t += mp[i];             // 持ち時間tにボーナスを追加
        t -= a[i];              // 持ち時間を消費
        if (t <= 0) {           // 持ち時間が0以下になった場合
            cout << "No" << endl;
            return 0;
        }
    }
    cout << "Yes" << endl;      // 上記のループを全て終えた場合はクリア
    return 0;
}

コメント