123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- package main
- import (
- "errors"
- "fmt"
- "io"
- "log"
- "slices"
- )
- const (
- MAX_LOOP = 1_000_000
- )
- func main() {
- left := make([]int, 0, 1024)
- right := make([]int, 0, 1024)
- var l, r int
- for i := 0; i < MAX_LOOP; i++ {
- n, err := fmt.Scan(&l, &r)
- if errors.Is(err, io.EOF) {
- break
- }
- if err != nil {
- log.Fatal("Unexpected error while reading input: ", err)
- }
- if n != 2 {
- log.Fatal(fmt.Sprintf("Unexpected number of fields at line %d of input", i+1))
- }
- left = append(left, int(l))
- right = append(right, int(r))
- }
- fmt.Printf("distance = %d\n", distance(left, right))
- }
- func distance(left, right []int) int {
- slices.Sort(left)
- slices.Sort(right)
- var sum int
- for i := 0; i < len(left); i++ {
- subSum := left[i] - right[i]
- if subSum < 0 {
- subSum *= -1
- }
- sum += subSum
- }
- return sum
- }
|