-
Notifications
You must be signed in to change notification settings - Fork 0
/
10816.cpp
70 lines (55 loc) · 961 Bytes
/
10816.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <stdio.h>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
long N; // 상근이가 가지고 있는 숫자 카드의 개수.
vector<long long> n;
long M;
vector<long long> m;
int BinarySearch(long long obj)
{
int low = 0;
int high = N-1;
int cnt = 0;
int mid = (low + high) / 2;
while(low <= high)
{
mid = (low + high) / 2;
if( obj == n[mid] )
{
for(int i=low;i<=high;i++)
{
if(n[i] == obj)
cnt++;
}
return cnt;
}
else if( obj > n[mid] )
low = mid + 1;
else if( obj < n[mid] )
high = mid - 1;
}
return 0;
}
int main(void)
{
cin >> N;
n.resize(N);
for(long i=0;i<N;i++)
{
cin >> n[i];
}
sort(n.begin(),n.end()); // 오름차순 정렬.
cin >> M;
m.resize(M);
for(long i=0;i<M;i++)
{
cin >> m[i];
}
for(long i=0;i<M;i++)
{
printf("%d ",BinarySearch(m[i]));
}
return 0;
}