fork download
  1. def f1(y,x)
  2. if x<=y then
  3. return [y-x,0,0]
  4. else
  5. return [0,x-y,0]
  6. end
  7. end
  8. def f2(y,x,h)
  9. dy=h+1-y
  10. if x<dy then
  11. return [y+x,0,1]
  12. else
  13. return [h+1,x-dy,1]
  14. end
  15. end
  16.  
  17.  
  18. h,w=gets.split(" ").map{|e| e.to_i}
  19. n=gets.to_i
  20. hs1={}
  21. hs2={}
  22. n.times{
  23. y,x=gets.split(" ").map{|e| e.to_i}
  24. hs1[f1(y,x)]=1
  25. hs1[f2(y,x,h)]=1
  26. y2=y+2
  27. x2=x+1
  28. if y2<=h && x2<=w
  29. hs2[[y2,x2]]=0 if hs2.member?([y2,x2])==false
  30. hs2[[y2,x2]]+=1
  31. end
  32. x2=x-1
  33. if y2<=h && 0<x2
  34. hs2[[y2,x2]]=0 if hs2.member?([y2,x2])==false
  35. hs2[[y2,x2]]+=1
  36. end
  37. }
  38. #p hs1
  39. hs3=hs2.select{|k,v|
  40. if v==2 then
  41. if hs1.member?(f1(k[0],k[1])) || hs1.member?(f2(k[0],k[1],h)) then
  42. false
  43. else
  44. true
  45. end
  46. else
  47. false
  48. end
  49. }
  50. puts hs3.size
Success #stdin #stdout 0.01s 8144KB
stdin
9 9
4
1 3
7 3
1 5
1 7
stdout
2