【AtCoder】ABC 467 B - Keep the Change

B - Keep the Changeatcoder.jp favicon

実行時間制限: 2 sec / メモリ制限: 1024 MiB / Difficulty: 39 / NoviSteps: 7Q / 配点: 200 点

問題概要

高橋君は NN 軒の店で買い物をした。

はじめ、高橋君は 1000010000 円持っており、 ii 軒目の店では AiA_i 円の商品を買って BiB_i 円支払った。 そして、 Si=S_i =keepの時、高橋君はお釣りを受け取らず、 Si=S_i =takeの場合、お釣りを受け取った。

高橋君が全ての店でお釣りを受け取っていた場合に比べて損した金額を求めよ。 厳密に述べると、

  • 高橋君の最終的な所持金を XX 円、
  • 高橋君が全ての店でお釣りを受け取っていた場合の最終的な所持金を YY

とした時、YXY - X を求めよ。

制約

  • 1N1001 \leq N \leq 100
  • 1AiBi1001 \leq A_i \leq B_i \leq 100
  • N,Ai,BiN, A_i, B_i は全て整数

考察

問題文の指示通りに、 X=Y=10000X = Y = 10000 から始めて、各店での買い物結果をシミュレーションすればよい。

実装例

CPP
1.#include <bits/stdc++.h>
2.using namespace std;
3.
4.#define rep(i, start, end) for (auto i = (start); (i) < (end); (i)++)
5.
6.// ======================================== //
7.
8.int main()
9.{
10. int N;
11. cin >> N;
12.
13. int X = 10000, Y = 10000;
14. rep(i, 0, N) {
15. int A, B;
16. string S;
17. cin >> A >> B >> S;
18.
19. if (S == "keep") {
20. X -= B;
21. }
22. else {
23. X -= A;
24. }
25.
26. Y -= A;
27. }
28.
29. cout << Y - X << endl;
30.
31. return 0;
32.}
atcoder.jp favicon

実装時間: 5 分以内

コメント

なんか AWC みたいな設定の凝り方だった。