Group for student JAVA programmers

Hey guys! I am new to Codechef here and am dealing with many problems (like TLE for most of the time) myself while solving competitive problems. So, I’ve decided to take on the practice problems in Java but I’ve noticed that there are very few submissions there to see and learn from. So I’ve decide to make a group in FB which will act as a platform to discuss our problems and solutions with our fellow Java programmers here. Anyone interested may follow this link : https://www.facebook.com/groups/127584137809470/

1 Like

If you are getting TLE due to slow I/O don’t use Scanner class .

I was getting TLE due to slow I/O during during April Long 17 for CLIQUED.

check out this :- [faster I/O in JAVA][1]

Happy Coding :slight_smile:
[1]: http://www.geeksforgeeks.org/fast-io-in-java-in-competitive-programming/

1 Like

Most of the time TLE is due to the naive algorithm and not I/O, but in JAVA it is good to use faster I/O.

1 Like

This is a code here for fast input output .

/FOR FAST INPUT/

static class Reader {

final private int BUFFER_SIZE = 1 << 16;

private DataInputStream din;
private byte[] buffer;
private int bufferPointer, bytesRead;

public Reader()
{
    din = new DataInputStream(System.in);
    buffer = new byte[BUFFER_SIZE];
    bufferPointer = bytesRead = 0;
}

public Reader(String file_name) throws IOException
{
    din = new DataInputStream(new FileInputStream(file_name));
    buffer = new byte[BUFFER_SIZE];
    bufferPointer = bytesRead = 0;
}

public String readLine() throws IOException
{
    byte[] buf = new byte[64]; // line length
    int cnt = 0, c;
    while ((c = read()) != -1)
    {
        if (c == '\n')
            break;
        buf[cnt++] = (byte) c;
    }
    return new String(buf, 0, cnt);
}

public int nextInt() throws IOException
{
    int ret = 0;
    byte c = read();
    while (c <= ' ')
        c = read();
    boolean neg = (c == '-');
    if (neg)
        c = read();
    do
    {
        ret = ret * 10 + c - '0';
    }  while ((c = read()) >= '0' && c <= '9');

    if (neg)
        return -ret;
    return ret;
}

public long nextLong() throws IOException
{
    long ret = 0;
    byte c = read();
    while (c <= ' ')
        c = read();
    boolean neg = (c == '-');
    if (neg)
        c = read();
    do {
        ret = ret * 10 + c - '0';
    }
    while ((c = read()) >= '0' && c <= '9');
    if (neg)
        return -ret;
    return ret;
}

public double nextDouble() throws IOException
{
    double ret = 0, div = 1;
    byte c = read();
    while (c <= ' ')
        c = read();
    boolean neg = (c == '-');
    if (neg)
        c = read();

    do {
        ret = ret * 10 + c - '0';
    }
    while ((c = read()) >= '0' && c <= '9');

    if (c == '.')
    {
        while ((c = read()) >= '0' && c <= '9')
        {
            ret += (c - '0') / (div *= 10);
        }
    }

    if (neg)
        return -ret;
    return ret;
}

private void fillBuffer() throws IOException
{
    bytesRead = din.read(buffer, bufferPointer = 0, BUFFER_SIZE);
    if (bytesRead == -1)
        buffer[0] = -1;
}

private byte read() throws IOException
{
    if (bufferPointer == bytesRead)
        fillBuffer();
    return buffer[bufferPointer++];
}

public void close() throws IOException
{
    if (din == null)
        return;
    din.close();
}

}

public static void main(String args[]) throws IOException{
Reader in=new Reader();
int t=in.nextInt();

}
//FINISH

i don’t think my algorithms are naive all the time. :frowning:

thanks for the link