Thursday, 11 December 2025

Input in comptetion java best

Link-> Link 


Haan bhai, Java me input lene ke 2–3 tareeke hote hain, aur competitive programming (Codeforces, CodeChef, AtCoder) me Scanner slow hota hai, isliye log fast I/O use karte hain.

Neeche main sari approaches explain karta hoon example ke saath:


1. Scanner (Slow – avoid in CP)

Scanner sc = new Scanner(System.in);
int n = sc.nextInt();

Yeh easy hai, par slow hai because:

  • Har read par regex check hota hai

  • Synchronization cost high hoti hai


2. BufferedReader + StringTokenizer (Fast – CP standard)

➡️ Competitive programming me sabse zyada use hota hai

Example:

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        int a = Integer.parseInt(st.nextToken());
        int b = Integer.parseInt(st.nextToken());

        System.out.println(a + b);
    }
}

Kyu fast hai?

  • BufferedReader ek baar me bada chunk read karta hai

  • StringTokenizer bina regex ke fast splitting karta hai

⭐ Codeforces ke 90% Java users yahi use karte hain.


3. Custom FastReader Class (Fastest & Cleanest)

Jab bahut saara input ho (1e6 integers), log FastReader banate hain:

import java.io.*;
import java.util.*;

class FastReader {
    BufferedReader br;
    StringTokenizer st;

    FastReader() {
        br = new BufferedReader(new InputStreamReader(System.in));
    }

    String next() throws IOException {
        while (st == null || !st.hasMoreElements()) {
            st = new StringTokenizer(br.readLine());
        }
        return st.nextToken();
    }

    int nextInt() throws IOException {
        return Integer.parseInt(next());
    }

    long nextLong() throws IOException {
        return Long.parseLong(next());
    }

    String nextLine() throws IOException {
        return br.readLine();
    }
}

Use:

FastReader fr = new FastReader();
int n = fr.nextInt();

⭐ Yeh CP me best mix of speed + convenience deta hai.


4. Even Faster: InputStream-based Reader (Ultra Fast)

Jab input extremely huge ho (10^7 chars), yeh use hota hai:

private static final InputStream in = System.in;
private static byte[] buffer = new byte[1 << 16];
private static int ptr = 0, len = 0;

private static int read() throws IOException {
    if (ptr >= len) {
        len = in.read(buffer);
        ptr = 0;
        if (len <= 0) return -1;
    }
    return buffer[ptr++];
}

static int nextInt() throws Exception {
    int c;
    while ((c = read()) <= ' ') ;
    int sign = (c == '-') ? -1 : 1;
    if (c == '-') c = read();

    int val = 0;
    while (c > ' ') {
        val = val * 10 + (c - '0');
        c = read();
    }
    return val * sign;
}

⚠️ Hard to write → only extreme input cases me use hota hai.


🔥 Summary: Which one to use?

Method Speed CP Suitable? Notes
Scanner ❌ Slow ❌ No Easy but slow
BufferedReader + StringTokenizer ⭐ Fast ⭐ Yes Most common
FastReader class ⭐⭐ Very Fast ⭐⭐ Yes Best mix
Custom InputStream parser 🚀 Ultra Fast ⚡ Only heavy input Hard to write

⭐ Recommended for you

Codeforces, LeetCode hard I/O problems me FastReader ya BufferedReader + StringTokenizer use karo.

Agar chaahe to main tumhare liye ek template bana dun jo tum directly CF me paste kar sako?

No comments:

Post a Comment

Hello

iot arch

 https://chatgpt.com/share/6996bd05-d8ec-800a-9716-c8bb927ed3c7