package main

import (
    "os"
    "fmt"
    . "aoc/aoc"
)

func find_winner(numbers []int, boards []Board) (*Board, int) {
    var boards_left = len(boards)
    for _, number := range numbers {
        for b, _ := range boards {
            if boards[b].Completed { continue }

            if MarkBoard(&boards[b], number) {
                if boards_left == 1 {
                    return &boards[b], number
                }
                boards[b].Completed = true
                boards_left -= 1;
            }
        }
    }

    return nil, -1
}

func main() {
    path := os.Args[1]

    numbers, boards, err := ReadFile(path)

    if err != nil {
        os.Exit(1)
    }

    board, last_number := find_winner(numbers, boards)

    var unmarked_sum = 0
    for _, row := range board.Fields {
        for _, col := range row {
            if !col.Marked {
                unmarked_sum += col.Value;
            }
        }
    }

    fmt.Println(unmarked_sum * last_number)
}