Congratulations on getting 10,000 reputation!
Ruby, 209 bytes

Edit: I switched to Ruby which shortened this by about 30%. See the edit history for the original Mathematica version. I suppose the main savings come from Ruby's permutation not ignoring switched positions of identical elements (which I had to trick Mathematica into).

This uses the newline-separated format.

gets.split('
').map{|s|s.split.map &amp;:to_i}.each_cons(2){|a,b|a.permutation.map{|q|q.zip(b).map{|x,y|y-x}}.reject{|d|d.any?{|x|x&lt;0||x&gt;200}}.size!=1?abort(':('):(puts':D '*(a.count{|d|d&lt;1e4}-b.count{|d|d&lt;1e4}))}


The gist is this:


Get all consecutive pairs of days.
Get all permutations of the former day, and subtract each of these from the current day.
Ditch all results which contain differences that are negative or greater 200.
If the number of remaining permutations isn't 1, output :(.
Otherwise, output as many :D as there are new 10k users.
At the end, drop all days after the first :(.


Less golf:

gets.split("\n").map{|s|
  s.split.map &amp;:to_i
}.each_cons(2){|a,b|
  a.permutation.map{|q|
    q.zip(b).map{|x,y|
      y-x
    }
  }.reject{|d|
    d.any?{|x|
      x&lt;0||x&gt;200
    }
  }.size!=1 ? abort(':(') : (puts ':D '*(a.count{|d|d&lt;1e4}-b.count{|d|d&lt;1e4}))
}


I think that's one beautiful chain of enumerators. :)

PS: Is it weird that I was the first one to submit an answer to this?