fork download
  1. package main
  2.  
  3. import (
  4. "bufio"
  5. "fmt"
  6. "os"
  7. )
  8.  
  9. const MOD int64 = 1000000007
  10.  
  11. func solve(N int, nums []int) int {
  12. pos, zero := 0, 0
  13. maxv := nums[0]
  14. maxc := 0
  15.  
  16. for _, v := range nums {
  17. if v > 0 {
  18. pos++
  19. }
  20. if v == 0 {
  21. zero++
  22. }
  23. if v > maxv {
  24. maxv = v
  25. maxc = 1
  26. } else if v == maxv {
  27. maxc++
  28. }
  29. }
  30.  
  31. if pos > 0 {
  32. res := int64(1)
  33. for i := 0; i < zero; i++ {
  34. res = (res * 2) % MOD
  35. }
  36. return int(res)
  37. }
  38.  
  39. if maxv == 0 {
  40. res := int64(1)
  41. for i := 0; i < maxc; i++ {
  42. res = (res * 2) % MOD
  43. }
  44. res--
  45. if res < 0 {
  46. res += MOD
  47. }
  48. return int(res)
  49. }
  50.  
  51. return maxc
  52. }
  53.  
  54. func main() {
  55. in := bufio.NewReader(os.Stdin)
  56.  
  57. var N int
  58. fmt.Fscan(in, &N)
  59.  
  60. nums := make([]int, N)
  61. for i := 0; i < N; i++ {
  62. fmt.Fscan(in, &nums[i])
  63. }
  64.  
  65. fmt.Println(solve(N, nums))
  66. }
  67.  
Success #stdin #stdout 0.01s 5288KB
stdin
3
1 2 3
stdout
1