package main import ( "bufio" "fmt" "log" "os" "sort" "strconv" "strings" ) func optimized() { fmt.Println("Optimized Code by ChatGPT") // Open the input file file, err := os.Open("./input.txt") if err != nil { log.Fatalf("Error opening input.txt: %v", err) } defer file.Close() var ( listA, listB []int ) // Read and parse input file scanner := bufio.NewScanner(file) for scanner.Scan() { line := strings.Fields(scanner.Text()) if len(line) != 2 { log.Fatalf("Invalid input format: %s", scanner.Text()) } num1, err1 := strconv.Atoi(line[0]) num2, err2 := strconv.Atoi(line[1]) if err1 != nil || err2 != nil { log.Fatalf("Error converting input to integers: %v, %v", err1, err2) } listA = append(listA, num1) listB = append(listB, num2) } if err := scanner.Err(); err != nil { log.Fatalf("Error reading file: %v", err) } // Part 1: Calculate sum of absolute differences sort.Ints(listA) sort.Ints(listB) sumPart1 := 0 for i := 0; i < len(listA); i++ { diff := listA[i] - listB[i] if diff < 0 { diff = -diff } sumPart1 += diff } fmt.Printf("Sum of Part 1: %d\n", sumPart1) // Part 2: Calculate weighted sum of matches sumPart2 := 0 countMap := make(map[int]int) // Populate a map for quick lookup for _, num := range listB { countMap[num]++ } for _, num := range listA { if count, found := countMap[num]; found { sumPart2 += count * num } } fmt.Printf("Sum of Part 2: %d\n", sumPart2) }