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 |
|
|
| 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 |