公式

A - 予算オーバー / Over Budget 解説 by admin

Qwen3-Coder-480B

概要

各プロジェクトの現在の予算と適正予算が与えられるので、予算オーバーのプロジェクト数と返還額の合計を求めます。

考察

この問題では、各プロジェクトについて以下2つの情報を求めます。

  1. 予算オーバーかどうか:つまり、\(A_i > B_i\) かどうか。
  2. 返還額:\(A_i > B_i\) のとき、\(A_i - B_i\) 万円を返還する必要がある。

素朴な方法として、すべてのプロジェクトについて上記の判定と計算を行い、カウントと合計を取るだけで十分です。制約を見ると、\(N\) は最大で \(2 \times 10^5\) なので、各プロジェクトに対して定数時間の処理を行うことができれば、全体でも間に合います。

また、入力を受け取るたびに処理を行うことで、すべてのデータを配列に保存する必要もありません。これにより、メモリ使用量も抑えられます。

アルゴリズム

  1. プロジェクト数 \(N\) を入力。
  2. 各プロジェクトについて:
    • \(A_i\)\(B_i\) を入力。
    • もし \(A_i > B_i\) なら:
      • 予算オーバーのカウンタを1増やす。
      • 返還額に \(A_i - B_i\) を加える。
  3. 最終的にカウンタと返還額の合計を出力。

この処理は、すべてのプロジェクトを一度だけ走査するだけで完了します。

入力例:

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 によって生成されました。

投稿日時:
最終更新: