← Home
For problem statement at 1000-1999/1900-1999/1970-1979/1976/problemD.txt this is a correct solution, but verifier at 1000-1999/1900-1999/1970-1979/1976/verifierD.go ends with case 1 failed: expected 4 got 
input:
((()()))
exit status 1 can you fix the verifier? ```go
package main

import (
	"bufio"
	"fmt"
	"os"
	"sort"
)

func main() {
	scanner := bufio.NewScanner(os.Stdin)
	scanner.Buffer(make([]byte, 0, 256*1024), 256*1024)
	scanner.Scan()
	var t int
	fmt.Sscan(scanner.Text(), &t)
	out := bufio.NewWriter(os.Stdout)
	defer out.Flush()
	for ; t > 0; t-- {
		if !scanner.Scan() {
			break
		}
		s := scanner.Text()
		n := len(s)
		p := make([]int, n+1)
		pos := make([][]int, n+2)
		pos[0] = append(pos[0], 0)
		for i := 1; i <= n; i++ {
			if s[i-1] == '(' {
				p[i] = p[i-1] + 1
			} else {
				p[i] = p[i-1] - 1
			}
			pos[p[i]] = append(pos[p[i]], i)
		}
		var ans int64 = 0
		for i := 0; i < n; i++ {
			k := p[i]
			target := 2*k + 1
			R := n + 1
			if target < len(pos) && len(pos[target]) > 0 {
				listTarget := pos[target]
				idx := sort.Search(len(listTarget), func(x int) bool { return listTarget[x] > i })
				if idx < len(listTarget) {
					R = listTarget[idx]
				}
			}
			listK := pos[k]
			left := sort.Search(len(listK), func(x int) bool { return listK[x] > i })
			right := sort.Search(len(listK), func(x int) bool { return listK[x] >= R })
			ans += int64(right - left)
		}
		fmt.Fprintln(out, ans)
	}
}
```