一見難しく見えるけど、実は単純な問題!
問題概要
整数 の書かれた 個の宝箱と、整数 の書かれた 個の鍵がある。
宝箱 は整数 が書かれた鍵を使うことで解錠できる。同じ鍵を使って複数の宝箱を解錠してもよい。
解錠できる宝箱の個数の最大値を求めよ。
制約
考えたこと
問題文の理解が難しいかもしれない。要は次のことを問いかけているのだ。
各整数 に対して、その値が数列 の中に含まれるかどうかを判定し、含まれるものの個数を求めよ。
このように解釈できれば、あとは素直に実装すればよい。
コード
#include <bits/stdc++.h> using namespace std; int main() { int N, M; cin >> N >> M; vector<int> A(N), B(M); for (int i = 0; i < N; ++i) cin >> A[i]; for (int i = 0; i < M; ++i) cin >> B[i]; int res = 0; for (int i = 0; i < N; ++i) { // A[i] が B の中にあるかどうかを判定する bool exist = false; for (int j = 0; j < M; ++j) { if (B[j] == A[i]) exist = true; } if (exist) ++res; } cout << res << endl; }