Official

B - Who is missing? Editorial by KoD


渡された束に \(x\) が書かれたカードが \(3\) 枚しかないような整数 \(x\) がただ一つ存在します。この \(x\) が答えです。

\(k \ (1 \leq k \leq N)\) について、\(k\) が書かれたカードが何枚あるか数えておくことで、この問題を解くことができます。

なお、別解として、\(4 \times (1 + \dots + N)\) から渡されたカードに書かれた整数の総和を引いた値を出力するという方法も考えられます。

実装例 (C++) :

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

int main() {
    int n;
    cin >> n;
    vector<int> count(n + 1);
    for (int i = 0; i < 4 * n - 1; ++i) {
        int a;
        cin >> a;
        count[a] += 1;
    }
    for (int i = 1; i <= n; ++i) {
        if (count[i] == 3) {
            cout << i << '\n';
        }
    }
    return 0;
}

実装例 (Python) :

n = int(input())
count = [0] * (n + 1)
for a in map(int, input().split()):
    count[a] += 1
for i in range(1, n + 1):
    if count[i] == 3:
        print(i)

posted:
last update: