Ideal Point (Codeforces 1795B)
Tags: Greedy, geometry

You are given $$$n$$$ one-dimensional segments (each segment is denoted by two integers — its endpoints).Let's define the function $$$f(x)$$$ as the number of segments covering point $$$x$$$ (a segment covers the point $$$x$$$ if $$$l \le x \le r$$$, where $$$l$$$ is the left endpoint and $$$r$$$ is the right endpoint of the segment).An integer point $$$x$$$ is called ideal if it belongs to more segments than any other integer point, i. e. $$$f(y) < f(x)$$$ is true for any other integer point $$$y$$$.You are given an integer $$$k$$$. Your task is to determine whether it is possible to remove some (possibly zero) segments, so that the given point $$$k$$$ becomes ideal.

Input: The first line contains one integer $$$t$$$ ($$$1 \le t \le 1000$$$) — the number of test cases.The first line of each test case contains two integers $$$n$$$ and $$$k$$$ ($$$1 \le n, k \le 50$$$).Then $$$n$$$ lines follow, $$$i$$$-th line of them contains two integers $$$l_i$$$ and $$$r_i$$$ ($$$1 \le l_i, r_i \le 50$$$; $$$l_i \le r_i$$$) — the endpoints of the $$$i$$$-th segment.

Output: For each test case, print YES if it is possible to remove some (possibly zero) segments, so that the given point $$$k$$$ becomes ideal, otherwise print NO.You may print each letter in any case (YES, yes, Yes will all be recognized as positive answer, NO, no and nO will all be recognized as negative answer).

Note: In the first example, the point $$$3$$$ is already ideal (it is covered by three segments), so you don't have to delete anything.In the fourth example, you can delete everything except the segment $$$[5, 5]$$$.

Sample Inputs:
4
4 3
1 3
7 9
2 5
3 6
2 9
1 4
3 7
1 3
2 4
3 5
1 4
6 7
5 5

Sample Outputs:
YES
NO
NO
YES

Solution (Python):
import sys
read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines
for _ in range(int(readline())):
    (N, K) = map(int, readline().split())
    (L, R) = (0, 150)
    for i in range(N):
        (l, r) = map(int, readline().split())
        if l <= K <= r:
            L = max(L, l)
            R = min(R, r)
    print('YES' if L == R else 'NO')

Solution (Python):
import sys
input = sys.stdin.readline

def solve():
    (n, k) = map(int, input().split())
    (s, e) = (0, 0)
    for i in range(n):
        (l, r) = map(int, input().split())
        if l == k:
            s += 1
        if r == k:
            e += 1
    if s > 0 and e > 0:
        print('YES')
    else:
        print('NO')
t = int(input())
for i in range(t):
    solve()

Solution (Python):
import sys
input = sys.stdin.readline
for tc in range(int(input())):
    (n, k) = map(int, input().split())
    (lb, rb) = (False, False)
    for i in range(n):
        (l, r) = map(int, input().split())
        if l == k:
            lb = True
        if r == k:
            rb = True
    print('YES' if lb and rb else 'NO')