Untitled

 avatar
unknown
plain_text
4 years ago
1.3 kB
37
Indexable
package SegMentTree;
import java.util.Scanner;
public class Main 
{
	
    public static void gsum(int a[], int tree[],int nut, int l  , int r)
    {
    	if(l == r)
    	{
    		tree[nut] = a[l];
    		return;
    	}
    	int mid = (l+r)/2;
    	gsum(a,tree,nut*2+1,l,mid);
    	gsum(a,tree,nut*2+2,mid+1,r);
    	tree[nut] = tree[2*nut+1] + tree[2*nut + 2];
    }
    
    
    public static int gsum1( int tree[], int nut, int l, int r, int u, int v)
    {
    	if(v < l || r < u)
    	{
    		return 0;
    	}
    	else if(u <= l && v <= r)
    	{
    		return tree[nut];
    	}
        else
        { 
            int mid = (l+r)/2;
    	    return gsum1(tree,nut*2+1,l,mid,u,v) + gsum1(tree,nut*2+2,mid+1,r,u,v);
        } 
    }
    
    
	public static void main(String[] args)
	{
		Scanner n = new Scanner(System.in);

		System.out.println("Nhap so phan tu:");
		int t = n.nextInt();
		int [] a = new int[100];
		int[] tree = new int[100];

		int i;
		System.out.println("Nhap phan tu:");
		for(i = 0;i<t;i++)
		{
			a[i] = n.nextInt();
		}
		
		int nut = 0;
	    gsum(a,tree,nut,0,t-1);

	    System.out.println("Nhap u , v:");
		int u = n.nextInt();
		int v = n.nextInt();

		int sum = gsum1(tree,nut,0,t-1,u,v);
		System.out.print(sum);
	}
}
Editor is loading...