Codeforces Round #160 (Div. 2)

http://www.codeforces.com/contest/262/

またまたA,B問題だけ。

A. Roma and Lucky Numbers

n個の整数値からなる配列が与えられる。

配列に含まれる数字のうち、各桁の"4"と"7"の合計がkを超えないものの数をカウントせよ。

n, k = gets.chomp.split(" ").map{|n| n.to_i}
digits = gets.chomp.split(" ")

c = 0

digits.each do |a|
  c+=1 if a.count("4") + a.count("7") <= k
end

puts c

B. Roma and Changing Signs

n個の数字a(|a| <= 10 ** 4)からなる配列が与えらえる。

この配列の中の任意の項に対し、k回-1を掛ける。

この操作を行った上で得られる配列の合計値を求めよ。

n, k = gets.chomp.split(" ").map{|n| n.to_i}
sequence = gets.chomp.split(" ").map{|n| n.to_i}
sequence.sort!

i = 0
k.times do
  break if i >= n or sequence[i] >= 0
  
  sequence[i] *= -1  
  i += 1
end

if (k - i) > 0
  sequence.sort!
  if (k - i) % 2 == 1
    sequence[0] *= -1
  end
end

puts sequence.inject{|sum, i| sum+= i}