46 lines
758 B
Go
46 lines
758 B
Go
package main
|
|
|
|
import (
|
|
"bufio"
|
|
"fmt"
|
|
"os"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
func main() {
|
|
left := map[int64]int64{};
|
|
right := map[int64]int64{};
|
|
reader := bufio.NewReader(os.Stdin)
|
|
|
|
for {
|
|
raw, _, _ := reader.ReadLine()
|
|
line := string(raw)
|
|
if strings.Trim(line, " ") == "" {
|
|
break
|
|
}
|
|
|
|
values := strings.Split(line, " ")
|
|
|
|
l, _ := strconv.ParseInt(values[0], 10, 64)
|
|
r, _ := strconv.ParseInt(values[1], 10, 64)
|
|
|
|
left[l] = left[l] + 1
|
|
right[r] = right[r] + 1
|
|
}
|
|
|
|
ans := part2(left, right)
|
|
|
|
fmt.Println("", ans)
|
|
}
|
|
|
|
func part2(left map[int64]int64, right map[int64]int64) int64 {
|
|
var sum int64 = 0
|
|
|
|
for key, l_count := range left {
|
|
count := right[key]
|
|
sum += l_count * count * key
|
|
}
|
|
|
|
return sum;
|
|
}
|