← Home
For problem statement at 1000-1999/1700-1799/1790-1799/1791/problemE.txt this is a correct solution, but verifier at 1000-1999/1700-1799/1790-1799/1791/verifierE.go ends with All 100 tests passed can you fix the verifier? package main

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

type FastScanner struct {
	r *bufio.Reader
}

func NewFastScanner() *FastScanner {
	return &FastScanner{bufio.NewReaderSize(os.Stdin, 1<<20)}
}

func (fs *FastScanner) NextInt64() int64 {
	var sign int64 = 1
	var v int64 = 0
	c, err := fs.r.ReadByte()
	for err == nil && (c < '0' || c > '9') && c != '-' {
		c, err = fs.r.ReadByte()
	}
	if err != nil {
		return 0
	}
	if c == '-' {
		sign = -1
		c, err = fs.r.ReadByte()
		if err != nil {
			return 0
		}
	}
	for c >= '0' && c <= '9' {
		v = v*10 + int64(c-'0')
		c, err = fs.r.ReadByte()
		if err != nil {
			break
		}
	}
	return v * sign
}

func abs64(x int64) int64 {
	if x < 0 {
		return -x
	}
	return x
}

func main() {
	in := NewFastScanner()
	out := bufio.NewWriterSize(os.Stdout, 1<<20)
	defer out.Flush()

	t := int(in.NextInt64())
	for ; t > 0; t-- {
		n := int(in.NextInt64())
		var sum int64 = 0
		neg := 0
		zero := false
		minAbs := int64(1<<62 - 1)
		for i := 0; i < n; i++ {
			x := in.NextInt64()
			if x < 0 {
				neg++
			}
			if x == 0 {
				zero = true
			}
			ax := abs64(x)
			sum += ax
			if ax < minAbs {
				minAbs = ax
			}
		}
		if zero || neg%2 == 0 {
			fmt.Fprintln(out, sum)
		} else {
			fmt.Fprintln(out, sum-2*minAbs)
		}
	}
}