Query Bits tle problem

giving tle
my code

import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.InputStream;
import java.util.;
import java.lang.
;
import java.io.;
import java.math.BigInteger;
import java.math.
;
import java.util.*;
public class Main {

static int tree[];
static void build(int a[],int s,int e,int tree[],int index){
if(s==e){
tree[index]=a[s];
return;
}
int mid=(s+e)/2;
//System.out.println((2index)+" "+(2index+1));
build(a,s,mid,tree,2index);
build(a,mid+1,e,tree,2
index+1);
tree[index]=(tree[2*index]2)+tree[2index+1];
return;
}
static void update(int tree[],int ss,int se,int i,int value,int index){
if(i>se || i<ss){
return ;
}
else if(se==ss && se==i){
tree[index]=value;
return ;
}

	 else{
		 int mid=(ss+se)/2;
		 update(tree,ss,mid,i,value,2*index);
		 update(tree,mid+1,se,i,value,2*index+1);
	     tree[index]=(tree[2*index]*2)+tree[2*index+1];
		return ;
	 }
}

static int query(int tree[],int ss,int se,int qs,int qe,int index){
if(qs>se || qe<ss){
return 0;
}
if(qs<=ss && qe>=se){
return tree[index];
}

		 int mid=(ss+se)/2;
		int leftAns= query(tree,ss,mid,qs,qe,2*index);
		int rightAns= query(tree,mid+1,se,qs,qe,2*index+1);
	      
		return ((leftAns*2)+rightAns);
	 
}
public static void main(String args[]) {
   Scanner sc = new Scanner(System.in);
   int n= sc.nextInt();
    int q=sc.nextInt();
	int a[]= new int[n];
	for(int i=0;i<n;i++){
	a[i]=0;
	}
	tree= new int[4*n+1];
	build(a,0,n-1,tree,1);
	
	for(int i=0;i<q;i++){
	   int type=sc.nextInt();
	   if(type==0){
             int l=sc.nextInt();
			 int r=sc.nextInt();
             for(int f=l;f<=r;f++){
			update(tree,0,n-1,f,0,1);}
			  
	   }
      else if(type==1){
             int l=sc.nextInt();
			 int r=sc.nextInt();
             for(int f=l;f<=r;f++){
			update(tree,0,n-1,f,1,1);}
			  
	   }
       else if(type==2){
             int l=sc.nextInt();
			 int r=sc.nextInt();
			int ans= query(tree,0,n-1,l,r,1);
			System.out.println(ans);
	   }
   
	}
}

}

this is a question of range updates, use lazy propagation and please save your code in ide , and copy the link otherwise it is tough to read it.

does lazy propation in segment tree is so good that it can avoid tle…

my solution

whenver there is range updates , we use only lazy propagation in segment tree