【AtCoder】ABC 185 B - Smartphone Addiction

B - Smartphone Addiction
AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.
AtCoder
実行時間制限: 2 sec / メモリ制限: 1024 MiB / Difficulty: 93 / NoviSteps: 6Q / 配点: 200 点
問題概要
高橋君のスマートフォンのバッテリー容量は [mAh] であり、 は整数 を迎える度にバッテリー残量が [mAh] ずつ減少する。
高橋君はスマートフォンを満充電した状態で時刻 に外出し、途中で 回カフェを訪れ、時刻 に帰宅する。
回目に訪れるカフェには時刻 から時刻 まで滞在する。 カフェに滞在している間はスマートフォンを充電するため、バッテリー残量は減少せず、代わりに時刻 は整数 を迎える度に [mAh] ずつ増加する。 ただし、既にバッテリー残量がバッテリー容量と等しい場合、バッテリー残量はそれ以上増加しない。
高橋君が途中でスマートフォンのバッテリー残量が になることなく帰宅することができるかを判定せよ。
制約
- 入力は全て整数
考察
時間を進めながら、スマートフォンのバッテリーの残量をシミュレーションすればよい。
最後のカフェから帰宅までの時間を忘れないようにすること。
実装例
CPP
1.#include <bits/stdc++.h>2.using namespace std;3. 4.// ======================================== //5. 6.int main()7.{8. int N, M, T;9. cin >> N >> M >> T;10. 11. int now = N, time = 0;12. while (M--)13. {14. int A, B;15. cin >> A >> B;16. 17. now -= A - time;18. time = A;19. if (now <= 0) {20. cout << "No" << endl;21. return 0;22. }23. 24. now = min(N, now + (B - A));25. time = B;26. }27. 28. now -= T - time;29. time = T;30. if (now <= 0) {31. cout << "No" << endl;32. return 0;33. }34. 35. cout << "Yes" << endl;36. 37. return 0;38.}https://atcoder.jp/contests/abc185/submissions/80403365
atcoder.jp
実装時間: 5 分
コメント
の時刻が出てくると身構えてしまう。





