main.go 708 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package main
  2. import (
  3. "bufio"
  4. "fmt"
  5. "os"
  6. "strconv"
  7. "strings"
  8. )
  9. func main() {
  10. var input = bufio.NewScanner(os.Stdin)
  11. var output int
  12. var digits []int
  13. for input.Scan() {
  14. line := input.Text()
  15. digits = []int{}
  16. values := strings.Split(line, " ")
  17. for _, v := range values {
  18. d, _ := strconv.Atoi(v)
  19. digits = append(digits, d)
  20. }
  21. output = minArray(digits)
  22. fmt.Println(output)
  23. }
  24. }
  25. func minArray(numbers []int) int {
  26. var left, right = 0, len(numbers) - 1
  27. var mid int
  28. for left < right {
  29. mid = (left + right) / 2
  30. if numbers[right] > numbers[mid] {
  31. right = mid
  32. } else if numbers[right] < numbers[mid] {
  33. left = mid + 1
  34. } else {
  35. right--
  36. }
  37. }
  38. return numbers[left]
  39. }