#include<iostream>
using namespace std;
struct node
{
       int num;
       int l,r;
       node * left;
       node * right;
};
node * create(node * root,int start,int end);
node * update(node * root, int i,int j);
int query(node * root,int i,int j); 
main()
{
   int n,q;
   cin>>n>>q;
   node * root=new node;
   root->num=0;
   root->left=NULL;
   root->right=NULL; 
   root=create(root,0,n-1);
   while(q--)
   {
      int type,i,j;
      cin>>type>>i>>j;
      if(type==0)
         root=update(root,i,j);
      if(type==1)
         cout<<query(root,i,j);
   }
}
node * create(node * root,int start,int end)
{
     if(start==end)
     {
         node * temp=new node();
         temp->num=0;
         temp->right=NULL;
         temp->left=NULL;
         temp->l=temp->r=start;
         return temp;
     }
     if(start!=end)
     {
       if(root==NULL)
         root=new node();
       root->num=0;
       root->l=start;
       root->r=end;
       root->left=create(root->left,start,(start+end)/2);
       root->right=create(root->right,((start+end)/2)+1,end);
       return root;
     }
}
node * update(node * root,int i,int j)
{
     if(root->l==root->r && (root->l >=i&&root->r <=j))
     {     
        root->num=1-(root->num);
        return root;
     }   
     if(root->left)
     root->left=update(root->left,i,j);
     if(root->right)
     root->right=update(root->right,i,j);
     if(root->left && root->right)
     root->num=root->left->num+root->right->num;
     return root;
}
int query(node * root,int i,int j)
{
     if(root->l>=i && root->r<=j)
        return root->num;
     int ans1,ans2;
     if(root->left)
      ans1=query(root->left,i,j);
     if(root->right)
      ans2=query(root->right,i,j);
     if(!root->left && !root->right)
      return 0;
     return ans1+ans2;
}
     
this is my solution to http://www.spoj.pl/problems/LITE/ . 
But i am getting wrong answer. Can someone suggest a few test cases for 
which my solution might be failing ? 

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/algogeeks/-/h6UQhCs1W_0J.
To post to this group, send email to algogeeks@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to