This is yet another problem dealing with regular bracket sequences.

We should remind you that a bracket sequence is called regular, if by inserting «+» and «1» into it we can get a correct mathematical expression. For example, sequences «(())()», «()» and «(()(()))» are regular, while «)(», «(()» and «(()))(» are not. 

You are given a string of «(» and «)» characters. You are to find its longest substring that is a regular bracket sequence. You are to find the number of such substrings as well.
The first line of the input file contains a non-empty string, consisting of «(» and «)» characters. Its length does not exceed 10<sup class="upper-index">6</sup>.
import sys


def longcorrectparsubstring(s):
    s = s.lstrip(")").rstrip("(\n")
    stack = [-1]
    top = [0, 1]
    for i in range(len(s)):
        if s[i] == "(":
            stack.append(i)
        else:
            if len(stack) != 1:
                stack.pop()
                l = i - stack[len(stack) - 1]
                if l > top[0]:
                    top[0] = l
                    top[1] = 1
                elif l == top[0]:
                    top[1] += 1
            else:
                stack[0] = i
    return " ".join(map(str, top))


def main():
    if len(sys.argv) == 3:
        if sys.argv[1] != "--file":
            print("usage: (--file filename) | nothing")
        strings = open(sys.argv[2]).readlines()
        for s in strings:
            print(longcorrectparsubstring(s))
    elif len(sys.argv) == 1:
        s = input()
        print(longcorrectparsubstring(s))
    else:
        print("usage: (--file filename) | nothing")


if __name__ == '__main__':
    main()
