algorithm'''problem solve

[백준]10816-숫자 카드2(설명X)

JunHwa Park 2020. 2. 1. 19:16
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
#include <cstdio>
#include <algorithm>
using namespace std;
 
int binary_search(int* arr, int start, int endint number) {
    int position = (start + end/ 2;
    if (start > end)
        return 0;
    else if (arr[position] == number) {
        if (arr[start] == number) {
            return position - start + 1 + binary_search(arr, position + 1end, number);
        }
        if (arr[end== number) {
            return end - position + 1 + binary_search(arr, start, position - 1, number);
        }
        return binary_search(arr, start, position - 1, number) + binary_search(arr, position + 1end, number) + 1;
    }
    else if (arr[position] > number)
        return binary_search(arr, start, position - 1, number);
    else
        return binary_search(arr, position + 1end, number);
}
 
int main() {
    int N, M, tmp;
    scanf("%d"&N);
    int* arr = new int[N];
    for (size_t i = 0; i < N; i++)
        scanf("%d"&arr[i]);
    sort(arr, arr + N);
    scanf("%d"&M);
    for (size_t i = 0; i < M; i++) {
        scanf("%d"&tmp);
        int range = binary_search(arr, 0, N - 1, tmp);
        printf("%d ", range);
    }
    return 0;
}
cs