← Home
For problem statement at 2000-2999/2000-2099/2020-2029/2028/problemC.txt this is a correct solution, but verifier at 2000-2999/2000-2099/2020-2029/2028/verifierC.go ends with All 201 tests passed. can you fix the verifier? package main

import (
	"bufio"
	"io"
	"os"
	"strconv"
)

type FastScanner struct {
	data []byte
	idx  int
	n    int
}

func NewFastScanner() *FastScanner {
	data, _ := io.ReadAll(os.Stdin)
	return &FastScanner{data: data, n: len(data)}
}

func (fs *FastScanner) NextInt64() int64 {
	for fs.idx < fs.n && fs.data[fs.idx] <= ' ' {
		fs.idx++
	}
	var val int64
	for fs.idx < fs.n {
		c := fs.data[fs.idx]
		if c < '0' || c > '9' {
			break
		}
		val = val*10 + int64(c-'0')
		fs.idx++
	}
	return val
}

func main() {
	fs := NewFastScanner()
	t := int(fs.NextInt64())

	out := bufio.NewWriterSize(os.Stdout, 1<<20)
	defer out.Flush()

	var ansBuf []byte

	for ; t > 0; t-- {
		n := int(fs.NextInt64())
		m := int(fs.NextInt64())
		v := fs.NextInt64()

		a := make([]int64, n+1)
		ps := make([]int64, n+1)
		for i := 1; i <= n; i++ {
			a[i] = fs.NextInt64()
			ps[i] = ps[i-1] + a[i]
		}

		left := make([]int, m+1)
		right := make([]int, m+1)

		left[0] = 0
		cnt := 0
		var sum int64
		for i := 1; i <= n && cnt < m; i++ {
			sum += a[i]
			if sum >= v {
				cnt++
				left[cnt] = i
				sum = 0
			}
		}

		if cnt < m {
			ansBuf = strconv.AppendInt(ansBuf, -1, 10)
			ansBuf = append(ansBuf, '\n')
			continue
		}

		right[0] = n + 1
		cnt = 0
		sum = 0
		for i := n; i >= 1 && cnt < m; i-- {
			sum += a[i]
			if sum >= v {
				cnt++
				right[cnt] = i
				sum = 0
			}
		}

		var ans int64
		for k := 0; k <= m; k++ {
			l := left[k]
			r := right[m-k]
			if l < r {
				cur := ps[r-1] - ps[l]
				if cur > ans {
					ans = cur
				}
			}
		}

		ansBuf = strconv.AppendInt(ansBuf, ans, 10)
		ansBuf = append(ansBuf, '\n')
	}

	out.Write(ansBuf)
}