【AtCoder】ABC 431 B - Robot Weight

B - Robot Weight
AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.
AtCoder
実行時間制限: 2 sec / メモリ制限: 1024 MiB / Difficulty: 36 / NoviSteps: 6Q / 配点: 200 点
問題概要
ロボットがあり、はじめの重さは である。
このロボットには、同時に取り付けられる部品が 種類あり、種類 の部品の重さは である。 はじめ、ロボットには 種類のうちのどの部品もついていない。
次の 個のクエリを順に処理せよ。 番目のクエリは以下の通り。
- 現在、ロボットに種類 の部品がついていない場合は取り付け、ついている場合は取り外す。その後、現在のロボットの重さを出力する。
制約
- 入力はすべて整数
考察
まずは、ロボットに種類 の部品が付いているかどうかをフラグ配列で管理しておこう。
その上で、現在のロボットの重さを保持しておき、クエリごとにフラグの更新と部品の重さを加減算して出力すればよい。
実装例
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 X, N;11. cin >> X >> N;12. vector<int> W(N);13. rep(i, 0, N) cin >> W[i];14. int Q;15. cin >> Q;16. 17. vector<bool> used(N, false);18. int ans = X;19. while (Q--)20. {21. int P;22. cin >> P;23. P--;24. 25. if (!used[P])26. {27. used[P] = true;28. ans += W[P];29. }30. else31. {32. used[P] = false;33. ans -= W[P];34. }35. 36. cout << ans << endl;37. }38. 39. return 0;40.}
Submission #70764424 - TOYOTA SYSTEMS Programming Contest 2025(AtCoder Beginner Contest 431)
AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.
AtCoder
実装時間: 5 分以内
コメント
これも素直に実装できる。





