Advertisement
Guest User

Untitled

a guest
Nov 17th, 2017
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 1.05 KB | None | 0 0
  1. BEGIN {t = Time.now}
  2. END {
  3.     t2 = Time.now
  4.     print "\nElapsed #{t2-t}s\n"
  5. }
  6.  
  7. str = File.read('many/pub06.in')
  8. $size_y, $size_x = str.lines.first.split(" ").map(&:to_i)
  9. $table = str.lines[1..$size_y].map{|a|a.split(" ").map(&:to_i)}
  10.  
  11. def path(x, y)
  12.     val = $table[y][x]
  13.     if val < 0
  14.         return false
  15.     else
  16.         $table[y][x] = -1000
  17.     end
  18.  
  19.     #X+
  20.     (x+val+(val>0?0:1)...$size_x).each do |i|
  21.         if val+$table[y][i] == i-x
  22.             path(i, y)
  23.         end
  24.     end
  25.  
  26.     #Y+
  27.     (y+val+(val>0?0:1)...$size_y).each do |i|
  28.         if val+$table[i][x] == i-y
  29.             path(x, i)
  30.         end
  31.     end
  32.  
  33.     #X-
  34.     (0...x-val).each do |i|
  35.         if val+$table[y][i] == x-i
  36.             path(i, y)
  37.         end
  38.     end
  39.  
  40.     #Y-
  41.     (0...y-val).each do |i|
  42.         if val+$table[i][x] == y-i
  43.             path(x, i)
  44.         end
  45.     end
  46. end
  47.  
  48. c = 0
  49. (0...$size_y).each do |y|
  50.     (0...$size_x).each do |x|
  51.         unless $table[y][x] < 0
  52.             path(x, y)
  53.             c += 1
  54.         end
  55.     end
  56. end
  57.  
  58. p c
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement