Aalchemist's blog

By Aalchemist, history, 7 years ago, In English

can you please why this code is having run time error???

solution link...

problem link

this problem is from today's contest ....

Full text and comments »

  • Vote: I like it
  • 0
  • Vote: I do not like it

By Aalchemist, history, 7 years ago, In English

Can anyone provide me a good source to learn about minimum spanning tree in a directed graph.The sources I found in the internet were very complex...

Full text and comments »

  • Vote: I like it
  • +5
  • Vote: I do not like it

By Aalchemist, history, 7 years ago, In English

My c++ solution got accepted. But same process for java causing memory limit exceeded error. can any one explain ??? it's a segment tree problem . I am just switching my language from cpp to java. but i am facing problem while submitting in different on line judges. As in this case same code in c++ got accepted.

Any tips to solve problem in java will definitely help me. I am in great danger.

problem link

my code

import java.util.*;

class segmnetTree {

int []  array, segarray;


segmnet()
{
    array=new int[100001];
    segarray=new int[400001];
}
int left(int n)
{
    return 2*n;
}
int right( int n)
{
    return 2*n+1;
}

void brmq(int p, int l, int r)
{
    if(l==r)
    {
        segarray[p]=array[l];
        return;
    }

    brmq(left(p),l,(l+r)/2);
    brmq(right(p),(l+r)/2+1,r);

    segarray[p]=Math.min(segarray[left(p)],segarray[right(p)]);
}

int rmq( int p,int l, int r, int i, int j)
{
    if(i>r || j<l)  return -1; // MAXXXX or set it in a way to understand
    else if(l>=i && r<=j)  return segarray[p];
    int a1=rmq( left(p), l,(l+r)/2, i,j);
    int a2=rmq( right(p), (l+r)/2+1 , r , i,j);

    if(a1==-1) return a2;
    if(a2==-1) return a1;
    else return Math.min(a1,a2);
}

}

public class SegmentTree {

public static void main(String[] args) {

    segmnet s1=new segmnet();
    Scanner sin=new Scanner(System.in);
    int cas=sin.nextInt();
    for( int cno=1; cno<=cas;cno++)
    {
        int n,q;
        n=sin.nextInt();
        q=sin.nextInt();


        for( int m=1;m<=n;m++)
        {
            s1.array[m]=sin.nextInt();
        }
        s1.brmq(1,1,n);
        System.out.println("Case "+cno+":");
        for( int m=0;m<q;m++)
        {
            int i,j;
            i=sin.nextInt();
            j=sin.nextInt();
            System.out.println(s1.rmq(1,1,n,i,j));



        }

    }

}

}

Full text and comments »

  • Vote: I like it
  • 0
  • Vote: I do not like it