Submission #69497862


Source Code Expand

class LazySegTree:
  def __init__(self, op, e, mapping, composition, id_, v):
    self._op = op
    self._e = e
    self._mapping = mapping
    self._composition = composition
    self._id = id_
    if isinstance(v, int):
      v = [e] * v
    self._n = len(v)
    self._log = (self._n-1).bit_length()
    self._size = 1 << self._log
    self._d = [e] * (2 * self._size)
    self._lz = [self._id] * self._size
    for i in range(self._n):
      self._d[self._size + i] = v[i]
    for i in range(self._size - 1, 0, -1):
      self._update(i)

  def set(self, p, x):
    assert 0 <= p < self._n
    p += self._size
    for i in range(self._log, 0, -1):
      self._push(p >> i)
    self._d[p] = x
    for i in range(1, self._log + 1):
      self._update(p >> i)

  def get(self, p):
    assert 0 <= p < self._n
    p += self._size
    for i in range(self._log, 0, -1):
      self._push(p >> i)
    return self._d[p]

  def prod(self, left, right):
    assert 0 <= left <= right <= self._n
    if left == right:
      return self._e
    left += self._size
    right += self._size
    for i in range(self._log, 0, -1):
      if ((left >> i) << i) != left:
        self._push(left >> i)
      if ((right >> i) << i) != right:
        self._push((right - 1) >> i)
    sml = self._e
    smr = self._e
    while left < right:
      if left & 1:
        sml = self._op(sml, self._d[left])
        left += 1
      if right & 1:
        right -= 1
        smr = self._op(self._d[right], smr)
      left >>= 1
      right >>= 1
    return self._op(sml, smr)

  def all_prod(self):
    return self._d[1]

  def apply(self, left, right, f):
    assert f is not None
    if right is None:
      p = left
      assert 0 <= left < self._n
      p += self._size
      for i in range(self._log, 0, -1):
        self._push(p >> i)
      self._d[p] = self._mapping(f, self._d[p])
      for i in range(1, self._log + 1):
        self._update(p >> i)
    else:
      assert 0 <= left <= right <= self._n
      if left == right:
        return
      left += self._size
      right += self._size
      for i in range(self._log, 0, -1):
        if ((left >> i) << i) != left:
          self._push(left >> i)
        if ((right >> i) << i) != right:
          self._push((right - 1) >> i)
      l2 = left
      r2 = right
      while left < right:
        if left & 1:
          self._all_apply(left, f)
          left += 1
        if right & 1:
          right -= 1
          self._all_apply(right, f)
        left >>= 1
        right >>= 1
      left = l2
      right = r2
      for i in range(1, self._log + 1):
        if ((left >> i) << i) != left:
          self._update(left >> i)
        if ((right >> i) << i) != right:
          self._update((right - 1) >> i)

  def max_right(self, left, g):
    assert 0 <= left <= self._n
    assert g(self._e)
    if left == self._n:
      return self._n
    left += self._size
    for i in range(self._log, 0, -1):
      self._push(left >> i)
    sm = self._e
    first = True
    while first or (left & -left) != left:
      first = False
      while left % 2 == 0:
        left >>= 1
      if not g(self._op(sm, self._d[left])):
        while left < self._size:
          self._push(left)
          left *= 2
          if g(self._op(sm, self._d[left])):
            sm = self._op(sm, self._d[left])
            left += 1
        return left - self._size
      sm = self._op(sm, self._d[left])
      left += 1
    return self._n

  def min_left(self, right, g):
    assert 0 <= right <= self._n
    assert g(self._e)
    if right == 0:
      return 0
    right += self._size
    for i in range(self._log, 0, -1):
      self._push((right - 1) >> i)
    sm = self._e
    first = True
    while first or (right & -right) != right:
      first = False
      right -= 1
      while right > 1 and right % 2:
        right >>= 1
      if not g(self._op(self._d[right], sm)):
        while right < self._size:
          self._push(right)
          right = 2 * right + 1
          if g(self._op(self._d[right], sm)):
            sm = self._op(self._d[right], sm)
            right -= 1
        return right + 1 - self._size
      sm = self._op(self._d[right], sm)
    return 0

  def _update(self, k):
    self._d[k] = self._op(self._d[2 * k], self._d[2 * k + 1])

  def _all_apply(self, k, f):
    self._d[k] = self._mapping(f, self._d[k])
    if k < self._size:
      self._lz[k] = self._composition(f, self._lz[k])

  def _push(self, k):
    self._all_apply(2 * k, self._lz[k])
    self._all_apply(2 * k + 1, self._lz[k])
    self._lz[k] = self._id


n, q = map(int, input().split())
Q = [tuple(map(int, input().split())) for _ in range(q)]
seg = LazySegTree(
  op = lambda x, y: x+y, 
  e = 0, 
  mapping = lambda x, y: x+y, 
  composition = lambda x, y: x+y, 
  id_ = 0, 
  v = [0]*n 
)

mod = 998244353
p = 1007
now = 1
for i, (l, r) in enumerate(Q):
  l -= 1
  r -= 1
  if seg.get(l)==seg.get(r):
    seg.apply(l, r+1, now)
    now = now*p%mod
    print('Yes')
  else:
    print('No')

Submission Info

Submission Time
Task G - Set list
User uparupaaa
Language Python (PyPy 3.10-v7.3.12)
Score 0
Code Size 5197 Byte
Status RE
Exec Time 119 ms
Memory 85664 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 625
Status
RE × 2
RE × 71
Set Name Test Cases
Sample example_00.txt, example_01.txt
All example_00.txt, example_01.txt, hand_00.txt, hand_01.txt, hand_02.txt, hand_03.txt, hand_04.txt, hand_05.txt, hand_06.txt, hand_07.txt, hand_08.txt, random_00.txt, random_01.txt, random_02.txt, random_03.txt, random_04.txt, random_05.txt, random_06.txt, random_07.txt, random_08.txt, random_09.txt, random_10.txt, random_11.txt, random_12.txt, random_13.txt, random_14.txt, random_15.txt, random_16.txt, random_17.txt, random_18.txt, random_19.txt, random_20.txt, random_21.txt, random_22.txt, random_23.txt, random_24.txt, random_25.txt, random_26.txt, random_27.txt, random_28.txt, random_29.txt, random_30.txt, random_31.txt, random_32.txt, random_33.txt, random_34.txt, random_35.txt, random_36.txt, random_37.txt, random_38.txt, random_39.txt, random_40.txt, random_41.txt, random_42.txt, random_43.txt, random_44.txt, random_45.txt, random_46.txt, random_47.txt, random_48.txt, random_49.txt, random_50.txt, random_51.txt, random_52.txt, random_53.txt, random_54.txt, random_55.txt, random_56.txt, random_57.txt, random_58.txt, random_59.txt
Case Name Status Exec Time Memory
example_00.txt RE 114 ms 85040 KiB
example_01.txt RE 114 ms 84860 KiB
hand_00.txt RE 116 ms 85428 KiB
hand_01.txt RE 118 ms 85636 KiB
hand_02.txt RE 118 ms 85572 KiB
hand_03.txt RE 115 ms 85032 KiB
hand_04.txt RE 117 ms 84812 KiB
hand_05.txt RE 119 ms 85544 KiB
hand_06.txt RE 116 ms 84880 KiB
hand_07.txt RE 115 ms 84864 KiB
hand_08.txt RE 116 ms 85456 KiB
random_00.txt RE 116 ms 85272 KiB
random_01.txt RE 116 ms 85304 KiB
random_02.txt RE 116 ms 85600 KiB
random_03.txt RE 116 ms 85524 KiB
random_04.txt RE 116 ms 85528 KiB
random_05.txt RE 116 ms 85416 KiB
random_06.txt RE 116 ms 85564 KiB
random_07.txt RE 117 ms 85288 KiB
random_08.txt RE 116 ms 85648 KiB
random_09.txt RE 116 ms 85524 KiB
random_10.txt RE 117 ms 85364 KiB
random_11.txt RE 117 ms 85356 KiB
random_12.txt RE 116 ms 85356 KiB
random_13.txt RE 116 ms 85480 KiB
random_14.txt RE 116 ms 85608 KiB
random_15.txt RE 116 ms 85296 KiB
random_16.txt RE 117 ms 85436 KiB
random_17.txt RE 117 ms 85332 KiB
random_18.txt RE 117 ms 85592 KiB
random_19.txt RE 116 ms 85492 KiB
random_20.txt RE 117 ms 85292 KiB
random_21.txt RE 116 ms 85336 KiB
random_22.txt RE 116 ms 85468 KiB
random_23.txt RE 116 ms 85464 KiB
random_24.txt RE 116 ms 85448 KiB
random_25.txt RE 116 ms 85616 KiB
random_26.txt RE 116 ms 85204 KiB
random_27.txt RE 116 ms 85408 KiB
random_28.txt RE 117 ms 85340 KiB
random_29.txt RE 117 ms 85524 KiB
random_30.txt RE 116 ms 85508 KiB
random_31.txt RE 116 ms 85460 KiB
random_32.txt RE 116 ms 85440 KiB
random_33.txt RE 116 ms 85604 KiB
random_34.txt RE 116 ms 85336 KiB
random_35.txt RE 116 ms 85644 KiB
random_36.txt RE 117 ms 85536 KiB
random_37.txt RE 116 ms 85664 KiB
random_38.txt RE 116 ms 85324 KiB
random_39.txt RE 116 ms 85388 KiB
random_40.txt RE 116 ms 85268 KiB
random_41.txt RE 116 ms 85448 KiB
random_42.txt RE 116 ms 85508 KiB
random_43.txt RE 116 ms 85468 KiB
random_44.txt RE 116 ms 85364 KiB
random_45.txt RE 116 ms 85336 KiB
random_46.txt RE 116 ms 85304 KiB
random_47.txt RE 117 ms 85512 KiB
random_48.txt RE 116 ms 85292 KiB
random_49.txt RE 117 ms 85480 KiB
random_50.txt RE 116 ms 85540 KiB
random_51.txt RE 117 ms 85620 KiB
random_52.txt RE 116 ms 85536 KiB
random_53.txt RE 116 ms 85300 KiB
random_54.txt RE 116 ms 85456 KiB
random_55.txt RE 116 ms 85528 KiB
random_56.txt RE 116 ms 85548 KiB
random_57.txt RE 116 ms 85336 KiB
random_58.txt RE 117 ms 85544 KiB
random_59.txt RE 116 ms 85620 KiB