← Home
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')
}