[215007][伯俊/BOJ]10816号デジタルカード2


質問する



にゅうしゅつりょく



に答える


upper boundは関数で、検索する値よりも大きい位置を返します.
lower boundは、検索する値以上の最初の位置を返す関数です.
upper bound-low boundを使用すると、重複する値がいくつあるかがわかります.

コード#コード#

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

int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);

	int n, m, num;
	
	cin >> n;
	vector<int> V(n);
	for (int i = 0; i < n; ++i) cin >> V[i];
	sort(V.begin(), V.end());

	cin >> m;
	for (int i = 0; i < m; ++i)
	{
		cin >> num;
		
		// upper_bound는 찾고자 하는 값보다 큰 값이 처음 나오는 위치
		// lower_bound는 찾고자 하는 값 이상이 처음 나오는 위치
		cout << upper_bound(V.begin(), V.end(), num) - lower_bound(V.begin(), V.end(), num) << ' ';
	}
}