Skip to content

Instantly share code, notes, and snippets.

@whatalnk
Created March 7, 2016 01:16
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save whatalnk/78c3bff476d3b56806d5 to your computer and use it in GitHub Desktop.
AtCoder ARC #048
a, b = gets.chomp.split(" ").map(&:to_i)
if b > 0 && a < 0 then
puts b - a - 1
else
puts b - a
end
n = gets.chomp.to_i
rh = Array.new(100000+1){Array.new(4){Array.new()}}
n.times do |i|
r, h = gets.chomp.split.map(&:to_i)
rh[r][h] << i
end
k = 0
win = Array.new(n, 0)
lose = Array.new(n, 0)
draw = Array.new(n, 0)
rh.each do |r|
next if r.all?{|c| c.empty?}
# h = r[1]
a = r[1].length
b = r[2].length
c = r[3].length
r[1].each do |id|
win[id] += (k + b)
lose[id] += (n - k - a - b)
draw[id] += (a - 1)
end
r[2].each do |id|
win[id] += (k + c)
lose[id] += (n - k - b - c)
draw[id] += (b - 1)
end
r[3].each do |id|
win[id] += (k + a)
lose[id] += (n - k - c - a)
draw[id] += (c - 1)
end
k += (a + b + c)
end
n.times do |i|
puts sprintf("%i %i %i", win[i], lose[i], draw[i])
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment