Advertisement
Guest User

Untitled

a guest
Mar 26th, 2019
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Nim 1.09 KB | None | 0 0
  1. import tables
  2. import docopt
  3. import strutils
  4.  
  5. const base = {
  6.   4: 4.55,
  7.   5: 5.70,
  8.   6: 6.80,
  9.   7: 7.95,
  10.   8: 9.10,
  11.   9: 10.20,
  12.   10: 11.35,
  13.   11: 12.50,
  14.   12: 13.60,
  15.   13: 14.75,
  16.   14: 15.90,
  17.   15: 17.00,
  18.   16: 18.15,
  19.   17: 19.30,
  20.   18: 20.40,
  21.   19: 21.55,
  22.   20: 22.70,
  23.   21: 23.80,
  24.   22: 24.95,
  25.   23: 26.10,
  26.   24: 27.25,
  27.   25: 27.80,
  28.   26: 28.95,
  29.   27: 30.10,
  30.   28: 31.20,
  31.   29: 32.35,
  32.   30: 33.50,
  33.   35: 39.15,
  34.   40: 44.80,
  35.   45: 50.50,
  36.   50: 55.60,
  37.   60: 67.00,
  38.   70: 78.30,
  39.   75: 83.45,
  40.   80: 89.10,
  41.   90: 100.45,
  42.   100: 111.25,
  43.   125: 139.00,
  44.   150: 166.85,
  45.   200: 222.50}.toTable
  46.  
  47. proc solve(n: int): (float64, string) =
  48.   var
  49.     arr = newSeq[float](n+1)
  50.     tre = newSeq[string](n+1)
  51.   for i in 1 .. n:
  52.     arr[i] = base.getOrDefault(i, Inf)
  53.     tre[i] = $i
  54.     var j = 0
  55.     while 2*j < i:
  56.       if arr[j] + arr[i-j] < arr[i]:
  57.         arr[i] = arr[j] + arr[i-j]
  58.         tre[i] = "(" & tre[j] & "," & tre[i-j] & ")"
  59.       j.inc
  60.   (arr[n], tre[n])
  61.  
  62. let args = docopt("""
  63. Usage: wing <num>
  64. """)
  65.  
  66. echo solve(parseInt($args["<num>"]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement