def Min(a,b):
if a<b:
return a
else:
return b
class node:
def __init__(self,x,y):
self.l=x
self.r=y
self.key=0
self.lazy=0
if x<y:
mid=(x+y)/2
self.left=node(x,mid)
self.right=node(mid+1,y)
def Set(p,x,y):
if p.l==p.r:
p.key=y
return
mid=(p.l+p.r)/2
if x<=mid:
p.left.Set(x,y)
else:
p.right.Set(x,y)
p.key=Min(p.left.key,p.right.key)
def calc(p,x,y):
if p.l==x and p.r==y:
return p.key-p.lazy
if p.lazy!=0:
p.key=p.key-p.lazy
if a<b:
return a
else:
return b
class node:
def __init__(self,x,y):
self.l=x
self.r=y
self.key=0
self.lazy=0
if x<y:
mid=(x+y)/2
self.left=node(x,mid)
self.right=node(mid+1,y)
def Set(p,x,y):
if p.l==p.r:
p.key=y
return
mid=(p.l+p.r)/2
if x<=mid:
p.left.Set(x,y)
else:
p.right.Set(x,y)
p.key=Min(p.left.key,p.right.key)
def calc(p,x,y):
if p.l==x and p.r==y:
return p.key-p.lazy
if p.lazy!=0:
p.key=p.key-p.lazy