ABC265のB問題 Exploreを解説します。
問題のポイント
- 持ち時間Tがint型に収まらないので、long long 型にしましょう。
- ボーナスを与える処理は部屋に着いた直後にしましょう。
入力例
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;
}
コメント