[BOJ14170] Counting Haybales
Updated:
문제
- N(1<= <=100,000)개의 건초가 1차원 도로에 배치
- q개의 쿼리에 대해서 특정 구간에 건초 몇 개 있는지 검사
입력
- N, Q
- N 개의 다른 정수 (0<= <=1,000,000,000)
- 다음 Q 줄에 건초 개수 찾을 구간 A, B (0<= <=1,000,000,000)
설계
- 처음엔, n을 배열 인덱으로 담아 건초가 있는지 없는지 체크하는 방식으로 풀었음
- n최대가 10억인데, 당연히 시간초과 남
- STL 중 lower_bound, upper_bound 이용
- 그냥 순서대로 n을 배열에 담기
- sort하여 오름차순으로 정렬
- A, B에 해당하는 값을 찾아(lower_bound) 인덱스 빼주기
- b는 upper_bound를 이용해 찾아도 되고, 내 코드는 lower_bound에서 b+1을 하여 b값을 가진 인덱스의 다음 값을 도출
피드백
- lower_bound : 찾고 싶은 값 이상의 iter 반환
- upper_bound : 찾고 싶은 값 초과의 iter 반환
- 둘 다 iterator를 반환하기 때문에, 인덱스를 반환 받기 위해 해당 배열 빼기
- 어차피 둘의 값을 빼는 거라 iter - iter 하면 정수가 반환되기는 함
How I solved(click to github)
ref :
BOJ14170
Leave a comment