けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

AtCoder ABC 115 B - Christmas Eve Eve (7Q, 灰色, 200 点)

for 文の練習問題!

問題概要

 N 個の商品があって、それぞれ価格は  p_{1}, p_{2}, \dots, p_{N} 円である。これらをすべて購入する。

ただし、最高価格のものは半額となる。このとき、支払い金額の総和を求めよ。

制約

  •  2 \le N \le 10
  •  p_{i} は偶数

解法

 p_{1}, p_{2}, \dots, p_{N} について、

  • 総和を  S
  • 最大値を  M

としよう。これらの値は for 文で求められる。そして、答えは

 S - M/2

と表せる。

コード

#include <bits/stdc++.h>
using namespace std;

int main() {
    int N;
    cin >> N;
    int sum = 0, ma = 0;
    for (int i = 0; i < N; ++i) {
        int p; cin >> p;
        sum += p;
        ma = max(ma, p);
    }
    cout << sum - ma/2 << endl;
}