Created
August 18, 2020 14:44
-
-
Save itsvinayak/ad6d99e725c3d93f8e3542e390e0f656 to your computer and use it in GitHub Desktop.
Competitive Programming template for Python 3 files
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import os | |
import sys | |
from io import BytesIO, IOBase | |
__author__ = "vinayak sharma" | |
__version__ = "1.0.0" | |
__email__ = "itssvinayak@gmail.com" | |
# fastio | |
BUFSIZE = 8192 | |
class FastIO(IOBase): | |
newlines = 0 | |
def __init__(self, file): | |
self._fd = file.fileno() | |
self.buffer = BytesIO() | |
self.writable = "x" in file.mode or "r" not in file.mode | |
self.write = self.buffer.write if self.writable else None | |
def read(self): | |
while True: | |
b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE)) | |
if not b: | |
break | |
ptr = self.buffer.tell() | |
self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr) | |
self.newlines = 0 | |
return self.buffer.read() | |
def readline(self): | |
while self.newlines == 0: | |
b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE)) | |
self.newlines = b.count(b"\n") + (not b) | |
ptr = self.buffer.tell() | |
self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr) | |
self.newlines -= 1 | |
return self.buffer.readline() | |
def flush(self): | |
if self.writable: | |
os.write(self._fd, self.buffer.getvalue()) | |
self.buffer.truncate(0), self.buffer.seek(0) | |
class IOWrapper(IOBase): | |
def __init__(self, file): | |
self.buffer = FastIO(file) | |
self.flush = self.buffer.flush | |
self.writable = self.buffer.writable | |
self.write = lambda s: self.buffer.write(s.encode("ascii")) | |
self.read = lambda: self.buffer.read().decode("ascii") | |
self.readline = lambda: self.buffer.readline().decode("ascii") | |
sys.stdin, sys.stdout = IOWrapper(sys.stdin), IOWrapper(sys.stdout) | |
input = lambda: sys.stdin.readline().rstrip("\r\n") | |
# end of IO | |
def main(): | |
pass | |
if __name__ == "__main__": | |
main() | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment