Last active
August 8, 2021 02:20
-
-
Save jdabtieu/3069b7b971e247642bf34d109aa7825d to your computer and use it in GitHub Desktop.
C++ Fast IO (read & print signed & unsigned ints)
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
// IMPORTANT: Call Write(); at the end of your main function to flush the output buffer | |
#include <bits/stdc++.h> | |
#include <unistd.h> | |
#pragma GCC optimize ("Ofast") | |
int oPtr = 0; | |
#ifdef WIN64 | |
char sc() {return getchar();} | |
void pc(char c) {putchar(c);} | |
void Write() {return;} | |
#else | |
#include <sys/syscall.h> | |
#define BUF_SIZE 61846 | |
int iPtr = 0; | |
int maxPtr = 0; | |
char ibuf[BUF_SIZE]; | |
char obuf[BUF_SIZE]; | |
void Read() {maxPtr = syscall(SYS_read, 0, &ibuf, BUF_SIZE);iPtr = 0;} | |
void Write() {syscall(SYS_write, 1, &obuf, oPtr);oPtr = 0;} | |
char sc() {if (iPtr >= maxPtr) Read();return ibuf[iPtr++];} | |
void pc(char c) {if (oPtr >= BUF_SIZE) Write();obuf[oPtr++] = c;} | |
#endif // WIN64 | |
void _pi(int n) {if (n == 0) return;_pi(n / 10);pc((char) (n % 10 + '0'));} | |
void pi(int num) {if (num < 0) {pc('-');_pi(-num);} else if (num == 0) {pc('0');} else {_pi(num);}} | |
int si() {int x = 0;char c;while ((c = sc()) <= ' ');int neg = 0;if (c == '-') {neg = 1;c = sc();}do {x = x * 10 + (c - '0');} while ((c = sc()) > ' ');return neg ? -x : x;} | |
unsigned int su() {int x = 0;char c;while ((c = sc()) <= ' ');do {x = x * 10 + (c - '0');} while ((c = sc()) > ' ');return x;} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment