40 lines
515 B
Go
40 lines
515 B
Go
package q1975
|
|
|
|
import "math"
|
|
|
|
func abs(i int) int {
|
|
if i < 0 {
|
|
return -i
|
|
}
|
|
return i
|
|
}
|
|
|
|
func maxMatrixSum(matrix [][]int) int64 {
|
|
var sum int64
|
|
min_ := math.MaxInt
|
|
hasZero := false
|
|
nNeg := 0
|
|
|
|
for i := range matrix {
|
|
for _, num := range matrix[i] {
|
|
if num < 0 {
|
|
nNeg++
|
|
}
|
|
if num == 0 {
|
|
hasZero = true
|
|
}
|
|
num = abs(num)
|
|
sum += int64(num)
|
|
if num < min_ {
|
|
min_ = num
|
|
}
|
|
}
|
|
}
|
|
|
|
if hasZero || nNeg%2 == 0 {
|
|
return sum
|
|
}
|
|
return sum - 2*int64(min_)
|
|
}
|
|
|
|
var _ = maxMatrixSum
|