runnig

facebook-2013-qual-Parenthesis

Jan 28th, 2013
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.20 KB | None | 0 0
  1. import sys
  2.  
  3. def parse(S, begin_pos, smiley, paren_stack = 0):
  4.    
  5.     if paren_stack < 0:
  6.         return False
  7.    
  8.     L = len(S)
  9.    
  10.     for cur_pos in range(begin_pos, L):
  11.         ch = S[cur_pos]
  12.        
  13.         if ch == "(":
  14.             balanced_smiley = False
  15.             if S[cur_pos - 1] == ':':
  16.                 balanced_smiley = parse(S, cur_pos+1, True, paren_stack)
  17.                
  18.             balanced_nosmiley = parse(S, cur_pos+1, False, paren_stack+1)
  19.             ret = balanced_smiley or balanced_nosmiley
  20.            
  21.             return ret
  22.                
  23.         elif ch==")":
  24.             balanced_smiley = False
  25.             if S[cur_pos - 1] == ':':
  26.                 balanced_smiley = parse(S, cur_pos+1, True, paren_stack)
  27.             balanced_nosmiley = parse(S, cur_pos+1, False, paren_stack-1)
  28.             ret = balanced_smiley or balanced_nosmiley
  29.  
  30.             return ret
  31.        
  32.     ret = paren_stack == 0
  33.  
  34.     return ret
  35.  
  36. fp = sys.stdin if len(sys.argv)<2 else open(sys.argv[1])
  37.  
  38. M = int(fp.readline())
  39.  
  40. for i in range(M):
  41.     s = fp.readline().replace("\n",'')
  42.  
  43.     #print s
  44.     print "Case #%d: %s" % (i+1, "YES" if parse(s, 0, False) else "NO")
Advertisement
Add Comment
Please, Sign In to add comment