For problem statement at 0-999/300-399/320-329/324/problemA1.txt this is a correct solution, but verifier at 0-999/300-399/320-329/324/verifierA1.go ends with All 206 tests passed can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
"strconv"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Buffer(make([]byte, 1024*1024), 10*1024*1024)
scanner.Split(bufio.ScanWords)
if !scanner.Scan() {
return
}
n, _ := strconv.Atoi(scanner.Text())
a := make([]int64, n+1)
p := make([]int64, n+1)
for i := 1; i <= n; i++ {
scanner.Scan()
val, _ := strconv.ParseInt(scanner.Text(), 10, 64)
a[i] = val
if val > 0 {
p[i] = p[i-1] + val
} else {
p[i] = p[i-1]
}
}
firstOcc := make(map[int64]int)
maxScore := int64(-1e18)
bestL := -1
bestR := -1
for i := 1; i <= n; i++ {
val := a[i]
if l, ok := firstOcc[val]; ok {
score := 2*val + p[i-1] - p[l]
if score > maxScore {
maxScore = score
bestL = l
bestR = i
}
} else {
firstOcc[val] = i
}
}
cutDown := []int{}
for i := 1; i < bestL; i++ {
cutDown = append(cutDown, i)
}
for i := bestL + 1; i < bestR; i++ {
if a[i] <= 0 {
cutDown = append(cutDown, i)
}
}
for i := bestR + 1; i <= n; i++ {
cutDown = append(cutDown, i)
}
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
fmt.Fprintf(out, "%d %d\n", maxScore, len(cutDown))
for i, idx := range cutDown {
if i > 0 {
out.WriteByte(' ')
}
fmt.Fprintf(out, "%d", idx)
}
out.WriteByte('\n')
}