배열이 정렬되어 있어서 가능한 풀이이다. lower_bound와 upper_bound 두 함수를 만든다.
그러면 KKK의 등장 횟수는 upper_bound(K)−lower_bound(K)\text{upper\_bound}(K) - \text{lower\_bound}(K)upper_bound(K)−lower_bound(K)이다.
이진 탐색을 두 번 하면 한 질의당 O(logN)O(\log N)O(logN). 전체 O(N+QlogN)O(N + Q \log N)O(N+QlogN).
입력 1
7 5 1 3 5 5 5 7 9 5 3 4 1 9
출력 1
3 1 0 1 1
입력 2
1 3 42 42 0 100
출력 2
1 0 0
입력 3
5 4 2 2 2 2 2 2 1 3 -100
출력 3
5 0 0 0