Submission #1199640

#TimeUsernameProblemLanguageResultExecution timeMemory
1199640ofozCurtains (NOI23_curtains)Pypy 3
0 / 100
141 ms48812 KiB
from sys import stdout, setrecursionlimit
from math import ceil, floor, sqrt, comb
from collections import deque

def solve():
    n, m, q = map(int, input().split(" "))
    seg = []

    end = dict()
    start = dict()

    for _ in range(m):
        a, b = map(int, input().split(" "))
        seg.append((a, b))
        end[a] = min(end.get(a, float('inf')), b)
        start[b] = max(end.get(b, -float('inf')), a)

    prfx = [0] * (n+1)
    cur = []

    for i in range(1, n+1):
        if i in end: cur.append(end[i])
        while cur and cur[-1] < i: cur.pop()
        prfx[i] = prfx[i-1]
        if cur: prfx[i] += 1
    
    def getPrfx(l: int, r: int):
        left = 0 if l == 0 else prfx[l-1]
        right = prfx[r]
        return right - left
    
    for _ in range(q):
        a, b = map(int, input().split(" "))
        s = getPrfx(a, b)
        if s < (b-a+1) or b not in end.values() or a not in end:
            print("NO")
        elif end[a] > b or start[b] < a:
            print("NO")
        else:
            print("YES")

    

                



solve()
 

Compilation message (stdout)

Compiling 'curtains.py'...

=======
  adding: __main__.pyc (deflated 34%)

=======
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...