← Home
 ```go
package main

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

func main() {
	scanner := bufio.NewScanner(os.Stdin)
	scanner.Split(bufio.ScanWords)
	scanner.Scan()
	t := atoi(scanner.Text())
	for tc := 0; tc < t; tc++ {
		scanner.Scan()
		n := atoi(scanner.Text())
		a := make([]int, n)
		b := make([]int, n)
		for i := 0; i < n; i++ {
			scanner.Scan()
			a[i] = atoi(scanner.Text())
		}
		for i := 0; i < n; i++ {
			scanner.Scan()
			b[i] = atoi(scanner.Text())
		}

		sum := 0
		d := 0
		c := 0

		for i := 0; i < n; i++ {
			ai := a[i]
			bi := b[i]
			if ai == bi {
				sum += ai
				if ai == 1 || ai == -1 {
					c++
				}
			} else if ai > bi {
				sum += ai
				d += ai
			} else {
				sum += bi
				d -= bi
			}
		}

		absD := d
		if absD < 0 {
			absD = -absD
		}

		var minDiff int
		if absD > c {
			minDiff = absD - c
		} else {
			if (absD % 2) == (c % 2) {
				minDiff = 0
			} else {
				minDiff = 1
			}
		}

		ans := (sum - minDiff) / 2
		fmt.Println(ans)
	}
}

func atoi(s string) int {
	n := 0
	neg := false
	for i, ch := range s {
		if i == 0 && ch == '-' {
			neg = true
			continue
		}
		n = n*10 + int(ch-'0')
	}
	if neg {
		return -n
	}
	return n
}
```