公式
A - 予算オーバー / Over Budget 解説 by admin
Qwen3-Coder-480B概要
各プロジェクトの現在の予算と適正予算が与えられるので、予算オーバーのプロジェクト数と返還額の合計を求めます。
考察
この問題では、各プロジェクトについて以下2つの情報を求めます。
- 予算オーバーかどうか:つまり、\(A_i > B_i\) かどうか。
- 返還額:\(A_i > B_i\) のとき、\(A_i - B_i\) 万円を返還する必要がある。
素朴な方法として、すべてのプロジェクトについて上記の判定と計算を行い、カウントと合計を取るだけで十分です。制約を見ると、\(N\) は最大で \(2 \times 10^5\) なので、各プロジェクトに対して定数時間の処理を行うことができれば、全体でも間に合います。
また、入力を受け取るたびに処理を行うことで、すべてのデータを配列に保存する必要もありません。これにより、メモリ使用量も抑えられます。
アルゴリズム
- プロジェクト数 \(N\) を入力。
- 各プロジェクトについて:
- \(A_i\) と \(B_i\) を入力。
- もし \(A_i > B_i\) なら:
- 予算オーバーのカウンタを1増やす。
- 返還額に \(A_i - B_i\) を加える。
- 最終的にカウンタと返還額の合計を出力。
この処理は、すべてのプロジェクトを一度だけ走査するだけで完了します。
例
入力例:
3
10 5
8 8
12 7
処理の流れ:
- プロジェクト1: \(A_1 = 10\), \(B_1 = 5\) → 予算オーバー、返還額 \(5\) → カウント=1、合計=5
- プロジェクト2: \(A_2 = 8\), \(B_2 = 8\) → 正常 → 変化なし
- プロジェクト3: \(A_3 = 12\), \(B_3 = 7\) → 予算オーバー、返還額 \(5\) → カウント=2、合計=10
出力:2 10
計算量
- 時間計算量: \(O(N)\)
- 空間計算量: \(O(1)\)
実装のポイント
- 各プロジェクトの入力を逐次処理することで、配列に保存する必要がない。
- 条件分岐
if A > B:を使って、必要な場合にのみカウントと加算を行う。 - 変数名は意味のあるものを使うとコードが読みやすくなる(例:
count,total_refund)。
## ソースコード
```python
N = int(input())
count = 0
total_refund = 0
for _ in range(N):
A, B = map(int, input().split())
if A > B:
count += 1
total_refund += A - B
print(count, total_refund)
この解説は qwen3-coder-480b によって生成されました。
投稿日時:
最終更新: