lower_bound, upper_bound : 이진 탐색으로 원소를 탐색하는 함수
lower_bound(arr.begin(), arr.end(), key) - arr.begin(); : 찾으려는 key 값보다 같거나 큰 숫자가 배열 몇 번째에서 처음 등장하는지
upper_bound(arr.begin(), arr.end(), key) - arr.begin(); : 찾으려는 key 값을 초과하는 숫자가 배열 몇 번째에서 처음 등장하는지
(index값 알기 위해서는 arr.begin() 빼야 함)