Advertisement
Guest User

Untitled

a guest
Nov 27th, 2015
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.75 KB | None | 0 0
  1. package main
  2.  
  3. import "fmt"
  4. import "os"
  5. import "math"
  6.  
  7. /**
  8. * Auto-generated code below aims at helping you parse
  9. * the standard input according to the problem statement.
  10. **/
  11.  
  12. func main() {
  13. // W: width of the building.
  14. // H: height of the building.
  15. var W, H int
  16. fmt.Scan(&W, &H)
  17.  
  18. // N: maximum number of turns before game over.
  19. var N int
  20. fmt.Scan(&N)
  21.  
  22. var x, y int
  23. fmt.Scan(&x, &y)
  24.  
  25. var x0, y0, x1, y1, dx, dy int
  26.  
  27. fmt.Fprintf(os.Stderr, "building: (%d,%d)\n", W, H)
  28. fmt.Fprintf(os.Stderr, "N: %d\n", N)
  29. fmt.Fprintf(os.Stderr, "batman: (%d,%d)\n", x, y)
  30.  
  31. x0 = 0
  32. y0 = 0
  33. x1 = W-1
  34. y1 = H-1
  35.  
  36. for {
  37. // BOMB_DIR: the direction of the bombs from batman's current location (U, UR, R, DR, D, DL, L or UL)
  38. var BOMB_DIR string
  39. fmt.Scan(&BOMB_DIR)
  40.  
  41. switch BOMB_DIR {
  42. case "U":
  43. // adjust box
  44. y1 = y
  45.  
  46. dx = 0
  47. dy = int(math.Floor(float64((y0 - y)) / 2.0))
  48. case "UL":
  49. // adjust box
  50. y1 = y
  51. x1 = x
  52.  
  53. dx = int(math.Floor(float64((x0 - x)) / 2.0))
  54. dy = int(math.Floor(float64((y0 - y)) / 2.0))
  55. case "UR":
  56. // adjust box
  57. y1 = y
  58. x0 = x
  59.  
  60. dx = int(math.Ceil(float64((x1 - x)) / 2.0))
  61. dy = int(math.Floor(float64((y0 - y)) / 2.0))
  62. case "R":
  63. // adjust box
  64. x0 = x
  65.  
  66. dx = int(math.Ceil(float64((x1 - x)) / 2.0))
  67. dy = 0
  68. case "D":
  69. // adjust box
  70. y0 = y
  71.  
  72. dx = 0
  73. dy = int(math.Ceil(float64((y1 - y)) / 2.0))
  74. case "DL":
  75. // adjust box
  76. x1 = x
  77. y0 = y
  78.  
  79. dx = int(math.Floor(float64((x0 - x)) / 2.0))
  80. dy = int(math.Ceil(float64((y1 - y)) / 2.0))
  81. case "DR":
  82. // adjust box
  83. x0 = x
  84. y0 = y
  85.  
  86. dx = int(math.Ceil(float64((x1 - x)) / 2.0))
  87. dy = int(math.Ceil(float64((y1 - y)) / 2.0))
  88. case "L":
  89. // adjust box
  90. x1 = x
  91.  
  92. dx = int(math.Floor(float64((x0 - x)) / 2.0))
  93. dy = 0
  94. }
  95.  
  96. x += dx
  97. y += dy
  98.  
  99. fmt.Fprintf(os.Stderr, "dir: %s, box: (%d,%d) (%d,%d)\n", BOMB_DIR, x,y,x1,y1)
  100. fmt.Fprintf(os.Stderr, "delta: (%d,%d), next: (%d,%d)\n", dx, dy, x, y)
  101.  
  102. fmt.Printf("%d %d\n", x, y)
  103. }
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement