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

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

JOIG 本選 2022 A - ピアノコンクール (AOJ 0729) (7Q, 難易度 2)

for 文の練習!

問題概要

 N 個の整数  A_{1}, A_{2}, \dots, A_{N} のうち、最大値と最小値を除外した  N-2 個の整数の総和を求めよ。

制約

  •  3 \le N \le 50
  •  N 個の整数はすべて互いに相異なる

解法

まず  N 個の整数を「配列」として受け取りましょう (C++ では vector<int> 型など)。

その後、配列に対して for 文を回して、次の 3 つの値を求めます。


  • sum N 個の整数の総和
  • ma N 個の整数の最大値
  • mi N 個の整数の最小値

これらの値が求められたら、

sum - mi - ma

が答えです。

コード

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

int main() {
    int N;
    cin >> N;
    vector<int> A(N);
    for (int i = 0; i < N; i++) cin >> A[i];

    int sum = 0, mi = 101, ma = -1;
    for (int i = 0; i < N; i++) {
        sum += A[i];
        mi = min(mi, A[i]);
        ma = max(ma, A[i]);
    }
    cout << sum - mi - ma << endl;
}