Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class InputParser:
- def __init__(self, data):
- self._data = data
- self._pos = -1
- self._next = None
- def lex(self):
- if self._next != None:
- result = self._next
- self._next = None
- return result
- self._pos = self._pos + 1
- c = self._data[self._pos]
- if c == '(' or c == ')' or c == None:
- return c
- d = '0123456789'
- v = d.find(c)
- while True:
- i = d.find(self._data[self._pos + 1])
- if i == -1:
- break
- v = v * 10 + i
- self._pos = self._pos + 1
- return v
- def lookahead(self):
- if self._next == None:
- self._next = self.lex()
- return self._next
- result = 0
- def read_and_sum(parser):
- global result
- if parser.lex() != '(':
- raise SyntaxError('Expected: "("')
- l = parser.lookahead()
- if l == '(':
- left = read_and_sum(parser)
- l = parser.lex()
- else:
- parser.lex()
- left = None
- if type(l) is int:
- key = l
- else:
- raise SyntaxError('Expected: number')
- l = parser.lookahead()
- if l == ')':
- right = None
- else:
- right = read_and_sum(parser)
- if parser.lex() != ')':
- raise SyntaxError('Expected: ")"')
- if (left == None or left < key) and (right == None or right > key):
- result = result + 1
- return key
- parser = InputParser(input())
- read_and_sum(parser)
- print(result)
Advertisement
Add Comment
Please, Sign In to add comment