cs=[0]*101 n,d=gets.split(" ").map{|e| e.to_i} xs=gets.split(" ").map{|e| e.to_i} xs.each{|e| cs[e]+=1 } 1.upto(d){|d2| 0.upto(100-d2){|d3| u3=d2+d3 if 0<cs[d3] && 0<cs[u3] then d0=[cs[d3],cs[u3]].min cs[d3]-=d0 cs[u3]-=d0 end } } p cs
6 4 22 15 32 36 16 30 42 30 39 23 17 18
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]