Submission #56992697


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())
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 KiB

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