알고리즘/백준 문제풀이
[boj] 백준 12099 점심메뉴 python 풀이
감자156
2023. 8. 19. 11:48
반응형
문제
https://www.acmicpc.net/problem/12099
12099번: 점심메뉴
Q개의 줄에 줄마다 각 날의 영우와 승관이가 둘 다 좋아하는 메뉴의 수, 즉 u ≤ a ≤ v 이고, x ≤ b ≤ y 인 메뉴의 수를 출력한다
www.acmicpc.net
문제 풀이
매운맛 범위를 이분탐색해서 한번 범위를 좁혀주고, 단맛의 범위를 이분탐색으로 찾기
코드
import sys
input = sys.stdin.readline
import bisect
N, Q = map(int,(input().split()))
menu = [list(map(int,input().split())) for _ in range(N)]
menu.sort()
spicy = list(zip(*menu))[0]
sweet = list(zip(*menu))[1]
Q_list = [list(map(int,input().split())) for _ in range(Q)]
for q in Q_list:
l = bisect.bisect_left(spicy, q[0])
r = bisect.bisect_right(spicy, q[1])
tmp= sorted(sweet[l:r])
l = bisect.bisect_left(tmp, q[2])
r = bisect.bisect_right(tmp, q[3])
print(r-l)
반응형