← Home
For problem statement at 0-999/0-99/40-49/46/problemE.txt this is a correct solution, but verifier at 0-999/0-99/40-49/46/verifierE.go ends with All tests passed can you fix the verifier? ```go
package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
)

var sc = bufio.NewScanner(os.Stdin)

func nextInt() int {
	sc.Scan()
	i, _ := strconv.Atoi(sc.Text())
	return i
}

func max(a, b int64) int64 {
	if a > b {
		return a
	}
	return b
}

const INF int64 = 1000000000000000000

func main() {
	sc.Split(bufio.ScanWords)
	n := nextInt()
	m := nextInt()
	table := make([][]int64, n)
	for i := 0; i < n; i++ {
		table[i] = make([]int64, m)
		for j := 0; j < m; j++ {
			table[i][j] = int64(nextInt())
		}
	}
	prefix := make([][]int64, n)
	for i := 0; i < n; i++ {
		prefix[i] = make([]int64, m+1)
		for j := 1; j <= m; j++ {
			prefix[i][j] = prefix[i][j-1] + table[i][j-1]
		}
	}
	dp := make([][]int64, n)
	for i := 0; i < n; i++ {
		dp[i] = make([]int64, m+1)
	}
	for k := 1; k <= m; k++ {
		dp[0][k] = prefix[0][k]
	}
	for r := 1; r < n; r++ {
		prev1b := r
		if prev1b%2 == 1 {
			maxSuff := make([]int64, m+2)
			maxSuff[m+1] = -INF
			for j := m; j >= 1; j-- {
				maxSuff[j] = max(maxSuff[j+1], dp[r-1][j])
			}
			for k := 1; k <= m; k++ {
				var cand int64
				if k < m {
					cand = maxSuff[k+1]
				} else {
					cand = -INF
				}
				if cand == -INF {
					dp[r][k] = -INF
				} else {
					dp[r][k] = cand + prefix[r][k]
				}
			}
		} else {
			maxPref := make([]int64, m+2)
			maxPref[0] = -INF
			for j := 1; j <= m; j++ {
				maxPref[j] = max(maxPref[j-1], dp[r-1][j])
			}
			for k := 1; k <= m; k++ {
				var cand int64
				if k > 1 {
					cand = maxPref[k-1]
				} else {
					cand = -INF
				}
				if cand == -INF {
					dp[r][k] = -INF
				} else {
					dp[r][k] = cand + prefix[r][k]
				}
			}
		}
	}
	ans := int64(-INF)
	for k := 1; k <= m; k++ {
		if dp[n-1][k] > ans {
			ans = dp[n-1][k]
		}
	}
	fmt.Println(ans)
}
```