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) >> 1target.extend(source[: mid + 1][::-1])del source[: mid + 1]def append(self, val) -> None:self.back.append(val)def appendleft(self, val) -> None:
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 |
|
|
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 |