Created
January 15, 2014 19:03
-
-
Save praveendhinwa/8442238 to your computer and use it in GitHub Desktop.
Parse Class For Input, For output PrintWriter class is fast enough.
This file contains hidden or 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
| private static class Parser | |
| { | |
| final private int BUFFER_SIZE = 1 << 16; | |
| private DataInputStream din; | |
| private byte[] buffer; | |
| private int bufferPointer, bytesRead; | |
| public Parser(InputStream in) | |
| { | |
| din = new DataInputStream(in); | |
| buffer = new byte[BUFFER_SIZE]; | |
| bufferPointer = bytesRead = 0; | |
| } | |
| public int ni() throws Exception | |
| { | |
| int ret = 0; | |
| byte c = read(); | |
| while (c <= ' ') c = read(); | |
| boolean neg = c == '-'; | |
| if (neg) c = read(); | |
| do | |
| { | |
| ret = ret * 10 + c - '0'; | |
| c = read(); | |
| } while (c > ' '); | |
| if (neg) return -ret; | |
| return ret; | |
| } | |
| public long nl() throws Exception | |
| { | |
| long ret = 0; | |
| byte c = read(); | |
| while (c <= ' ') c = read(); | |
| boolean neg = c == '-'; | |
| if (neg) c = read(); | |
| do | |
| { | |
| ret = ret * 10 + c - '0'; | |
| c = read(); | |
| } while (c > ' '); | |
| if (neg) return -ret; | |
| return ret; | |
| } | |
| public String ns() throws Exception | |
| { | |
| StringBuffer ret=new StringBuffer(); | |
| byte c = read(); | |
| while (c <= ' ') c = read(); | |
| do | |
| { | |
| ret = ret.append((char)c); | |
| c = read(); | |
| } while (c > ' '); | |
| return ret.toString(); | |
| } | |
| private void fillBuffer() throws Exception | |
| { | |
| bytesRead = din.read(buffer, bufferPointer = 0, BUFFER_SIZE); | |
| if (bytesRead == -1) buffer[0] = -1; | |
| } | |
| private byte read() throws Exception | |
| { | |
| if (bufferPointer == bytesRead) fillBuffer(); | |
| return buffer[bufferPointer++]; | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment