Submission #56992471


Source Code Expand

class DoubleListDeque:
    __slots__ = ("front", "back")

    def __init__(self, init_arr: list = None) -> None:
        init_arr = init_arr or []
        mid = len(init_arr)
        self.front = init_arr[:mid][::-1]
        self.back = init_arr[mid:]

    def _rebalance(self) -> None:
        source, target = (
            (self.front, self.back) if not self.back else (self.back, self.front)
        )
        mid = len(source) >> 1
        target.extend(source[: mid + 1][::-1])
        del source[: mid + 1]

    def append(self, val) -> None:
        self.back.append(val)

    def appendleft(self, val) -> None:
        self.front.append(val)

    def pop(self):
        if not self:
            raise IndexError("pop from empty deque")
        if not self.back:
            self._rebalance()
        return self.back.pop()

    def popleft(self):
        if not self:
            raise IndexError("popleft from empty deque")
        if not self.front:
            self._rebalance()
        return self.front.pop()

    def __getitem__(self, i: int):
        l = len(self)
        if i < -l or l <= i:
            raise IndexError("deque index out of range")
        i = i if i >= 0 else i + l
        if i < len(self.front):
            return self.front[~i]
        else:
            return self.back[i - len(self.front)]

    def __setitem__(self, i: int, val):
        l = len(self)
        if i < -l or l <= i:
            raise IndexError("deque index out of range")
        i = i if i >= 0 else i + l
        if i < len(self.front):
            self.front[~i] = val
        else:
            self.back[i - len(self.front)] = val

    def __len__(self) -> int:
        return len(self.front) + len(self.back)

    def __str__(self) -> str:
        return f"Deque({self._tolist()})"

    def _tolist(self) -> list:
        return self.front[::-1] + self.back


import sys


def input():
    return sys.stdin.readline().strip()


N, Q = map(int, input().split())
deq = DoubleListDeque([(i, 0) for i in range(1, N + 1)])
d = {"U": (0, 1), "R": (1, 0), "D": (0, -1), "L": (-1, 0)}
for _ in range(Q):
    qt, x = input().split()
    if qt == "1":
        deq.pop()
        dx, dy = d[x]
        nx, ny = deq[0][0] + dx, deq[0][1] + dy
        deq.appendleft((nx, ny))
    else:
        print(*deq[int(x) - 1])

Submission Info

Submission Time
Task C - Loong Tracking
User Alumite14
Language Python (PyPy 3.10-v7.3.12)
Score 300
Code Size 2403 Byte
Status AC
Exec Time 237 ms
Memory 142236 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 300 / 300
Status
AC × 1
AC × 31
Set Name Test Cases
Sample sample_01.txt
All 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, sample_01.txt
Case Name Status Exec Time Memory
random_01.txt AC 181 ms 141948 KiB
random_02.txt AC 127 ms 91524 KiB
random_03.txt AC 173 ms 141992 KiB
random_04.txt AC 133 ms 114780 KiB
random_05.txt AC 216 ms 142232 KiB
random_06.txt AC 203 ms 133896 KiB
random_07.txt AC 171 ms 141740 KiB
random_08.txt AC 112 ms 96592 KiB
random_09.txt AC 237 ms 141808 KiB
random_10.txt AC 183 ms 102252 KiB
random_11.txt AC 183 ms 142048 KiB
random_12.txt AC 129 ms 101532 KiB
random_13.txt AC 140 ms 84928 KiB
random_14.txt AC 58 ms 76508 KiB
random_15.txt AC 175 ms 142076 KiB
random_16.txt AC 173 ms 142064 KiB
random_17.txt AC 175 ms 142220 KiB
random_18.txt AC 178 ms 142176 KiB
random_19.txt AC 192 ms 142236 KiB
random_20.txt AC 189 ms 141688 KiB
random_21.txt AC 189 ms 141928 KiB
random_22.txt AC 199 ms 141768 KiB
random_23.txt AC 191 ms 141732 KiB
random_24.txt AC 195 ms 141432 KiB
random_25.txt AC 187 ms 141548 KiB
random_26.txt AC 204 ms 141936 KiB
random_27.txt AC 184 ms 142148 KiB
random_28.txt AC 186 ms 142068 KiB
random_29.txt AC 188 ms 141852 KiB
random_30.txt AC 195 ms 142088 KiB
sample_01.txt AC 58 ms 76220 KiB