Quantcast
Channel: CodeChef Discuss - latest questions
Viewing all articles
Browse latest Browse all 39796

NZEC in Funny Marble

$
0
0

I was solving the funny marble problem of december/13 long contest problem. I have implemented segment tree , but getting NZEC error in code. Plz help !

import java.io.*;

class funny{

public static void main(String[] args) throws IOException{
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    String s=br.readLine();
    String str[]=s.split(" ");
    int n=Integer.parseInt(str[0]);
    int k=Integer.parseInt(str[1]);
    s=br.readLine();
    int size = 2 * (int)Math.pow(2.0, Math.ceil(Math.log(n * 1.0) / Math.log(2.0)) * 1.0) - 1;
    str=s.split(" ");
    long arr[]=new long[n+1];
    long tree[]=new long[size];
    for(int i=0;i<n;i++){
        arr[i]=Long.parseLong(str[i]);
    }
    createsegment(tree,arr,0,n-1,0);


    for(int i=0;i<k;i++){
        s=br.readLine();
        str=s.split(" ");
        String type=(str[0]);
        if(type.equals("S")){

            int l=Integer.parseInt(str[1]);
            int r=Integer.parseInt(str[2]);
            System.out.println(findsum(arr,0,n-1,l,r,0));   
        }else if(type.equals("G")){
            int ind=Integer.parseInt(str[1]);
            int val=Integer.parseInt(str[2]);

            update(tree,0,n-1,ind,val,0);

        }else{
            int ind=Integer.parseInt(str[1]);
            int val=Integer.parseInt(str[2]);
            update1(tree,0,n-1,ind,val,0);
        }
    }
}

public static void update(long tree[],int l,int r,int i,int val,int index){



    if(l>i || r<i){
        return ;    
    }
    tree[index]+=val;
    if(l!=r){
    int mid=(l+r)/2;
    update(tree,l,mid,i,val,2*index+1);update(tree,mid+1,r,i,val,2*index+2);

    }
}


public static void update1(long tree[],int l,int r,int i,int val,int index){
    if(l>i || r<i){
        return; 
    }   
    tree[index]-=val;
    if(l!=r){
        int mid=(l+r)/2;
        update(tree,l,mid,i,val,2*index+1);
        update(tree,mid+1,r,i,val,2*index+2);
    }
}
public static long findsum(long tree[],int l,int r, int ql,int qr,int index){
    if(l>=ql && r<=qr){
        return tree[index]; 
    }
    if(r<ql || l>qr){
        return 0;
    }
    int mid=(r+l)/2;
    return findsum(tree,l,mid,ql,qr,2*index+1)+findsum(tree,mid+1,r,ql,qr,2*index+2);
}

public static long createsegment(long tree[],long arr[],int l,int r,int index){
    if(l==r){
        tree[index]=arr[l];
        return arr[l];
    }

    int mid=(r+l)/2;
    tree[index]= createsegment(tree,arr,l,mid,2*index+1)+createsegment(tree,arr,mid+1,r,2*index+2);
    return tree[index];
}

}


Viewing all articles
Browse latest Browse all 39796

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>