Submission #56992697


Source Code Expand

Copy
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:
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
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())
A = list(map(int, input().split()))
deq = DoubleListDeque(A)
for _ in range(Q):
    qt, x, y = map(int, input().split())
    if qt == 1:
        deq[x - 1], deq[y - 1] = deq[y - 1], deq[x - 1]
    elif qt == 2:
        deq.appendleft(deq.pop())
    else:
        print(deq[x - 1])

Submission Info

Submission Time
Task 044 - Shift and Swapping(★3)
User Alumite14
Language Python (PyPy 3.10-v7.3.12)
Score 3
Code Size 2339 Byte
Status AC
Exec Time 186 ms
Memory 120892 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 3 / 3
Status
AC × 3
AC × 34
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
All max_01.txt, max_02.txt, max_03.txt, max_04.txt, max_05.txt, max_06.txt, max_07.txt, max_08.txt, max_09.txt, max_10.txt, min_01.txt, min_02.txt, min_03.txt, rand_01.txt, rand_02.txt, rand_03.txt, rand_04.txt, rand_05.txt, rand_06.txt, rand_07.txt, rand_08.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, sample_01.txt, sample_02.txt, sample_03.txt
Case Name Status Exec Time Memory
max_01.txt AC 131 ms 120892 KB
max_02.txt AC 131 ms 120856 KB
max_03.txt AC 149 ms 114068 KB
max_04.txt AC 154 ms 117404 KB
max_05.txt AC 149 ms 117536 KB
max_06.txt AC 153 ms 113812 KB
max_07.txt AC 162 ms 112380 KB
max_08.txt AC 168 ms 119892 KB
max_09.txt AC 166 ms 116960 KB
max_10.txt AC 167 ms 120036 KB
min_01.txt AC 60 ms 76404 KB
min_02.txt AC 61 ms 76360 KB
min_03.txt AC 60 ms 76356 KB
rand_01.txt AC 164 ms 116320 KB
rand_02.txt AC 170 ms 113068 KB
rand_03.txt AC 174 ms 120092 KB
rand_04.txt AC 165 ms 120132 KB
rand_05.txt AC 171 ms 112364 KB
rand_06.txt AC 167 ms 120024 KB
rand_07.txt AC 172 ms 120064 KB
rand_08.txt AC 177 ms 116732 KB
random_01.txt AC 175 ms 115432 KB
random_02.txt AC 179 ms 120124 KB
random_03.txt AC 179 ms 116636 KB
random_04.txt AC 177 ms 119956 KB
random_05.txt AC 178 ms 119968 KB
random_06.txt AC 175 ms 116288 KB
random_07.txt AC 177 ms 116160 KB
random_08.txt AC 177 ms 116744 KB
random_09.txt AC 186 ms 120388 KB
random_10.txt AC 169 ms 116972 KB
sample_01.txt AC 61 ms 76280 KB
sample_02.txt AC 62 ms 76536 KB
sample_03.txt AC 60 ms 76624 KB


2025-04-26 (Sat)
16:18:35 +00:00