Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
class RangeModule { public static class Node{ public int left; public int right; public Node l; public Node r; public Node(int left,int right){ this.left=left; this.right=right; } } public Node root; public RangeModule() { } public void addRange(int left, int right) { this.root=insert(root,left,right-1); } public boolean queryRange(int left, int right) { return query(root,left,right-1); } public void removeRange(int left, int right) { this.root=remove(root,left,right-1); } public Node remove(Node node,int left,int right){ if(node==null) return null; if(right
node.right){ node.r=remove(node.r,left,right); }else if(left<=node.left && right>=node.right){ Node l=remove(node.l,left,right); Node r=remove(node.r,left,right); if(l==null){ return r; }else if(r==null){ return l; }else{ if(l.r==null){ l.r=r; return l; }else{ Node temp=r; while(temp.l!=null){ temp=temp.l; } temp.l=l; return r; } } }else if(left<=node.left){ node.left=right+1; node.l=remove(node.l,left,right); }else if(right>=node.right){ node.right=left-1; node.r=remove(node.r,left,right); }else{ Node newR=new Node(right+1,node.right); Node r=node.r; node.right=left-1; newR.r=r; node.r=newR; } return node; } public boolean query(Node node,int left,int right){ if(node==null) return false; if(right
node.right){ return query(node.r,left,right); }else if(left>=node.left && right<=node.right){ return true; } return false; } public Node insert(Node node,int left,int right){ if(node==null){ return new Node(left,right); } if(right
node.right+1){ node.r=insert(node.r,left,right); }else{ int[]info=new int[]{left,right}; node.l=insertprocess(node.l,info,true); node.r=insertprocess(node.r,info,false); node.left=Math.min(node.left,info[0]); node.right=Math.max(node.right,info[1]); } return node; } public Node insertprocess(Node node,int [] info,boolean isleft){ if(node==null){ return null; } if(isleft){ if(node.right>=info[0]-1){ info[0]=Math.min(info[0],node.left); return insertprocess(node.l,info,isleft); }else{ node.r=insertprocess(node.r,info,isleft); return node; } }else if(!isleft){ if(node.left <=info[1]+1){ info[1]=Math.max(info[1],node.right); return insertprocess(node.r,info,isleft); }else{ node.l=insertprocess(node.l,info,isleft); return node; } } return node; } }
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)