package main

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

func checkNumber(slice []int, number int) [][2]int {
	result := make([][2]int, 0, 25)
	for i := 0; i < len(slice); i++ {
		for j := i + 1; j < len(slice); j++ {
			if slice[i]+slice[j] == number {
				result = append(result, [2]int{slice[i], slice[j]})
			}
		}
	}
	return result
}

// Task1 ...
func Task1(input []int, preamble int) int {
	for i := preamble; i < len(input); i++ {
		if len(checkNumber(input[i-preamble:i], input[i])) == 0 {
			return input[i]
		}
	}
	return -1
}

// Task2 ...
func Task2(input []int, target int) int {
	for i := 0; i < len(input); i++ {
		result, smallest, largest := input[i], input[i], input[i]
		for j := i + 1; j < len(input); j++ {
			result += input[j]
			if input[j] < smallest {
				smallest = input[j]
			}
			if input[j] > largest {
				largest = input[j]
			}
			if result == target {
				return smallest + largest
			} else if result > target {
				break
			}
		}
	}
	return -1
}

func main() {
	file, _ := os.Open("input.txt")
	scanner := bufio.NewScanner(file)

	input := make([]int, 0, 100)
	for scanner.Scan() {
		val, _ := strconv.Atoi(scanner.Text())
		input = append(input, val)
	}
	file.Close()

	result := Task1(input, 25)
	fmt.Printf("Task 1: %d\n", result)

	result = Task2(input, result)
	fmt.Printf("Task 2: %d\n", result)
}