結果
| 問題 | 
                            No.2094 Symmetry
                             | 
                    
| コンテスト | |
| ユーザー | 
                             siman
                         | 
                    
| 提出日時 | 2022-10-19 14:45:14 | 
| 言語 | Ruby  (3.4.1)  | 
                    
| 結果 | 
                             
                                AC
                                 
                             
                            
                         | 
                    
| 実行時間 | 293 ms / 2,000 ms | 
| コード長 | 697 bytes | 
| コンパイル時間 | 366 ms | 
| コンパイル使用メモリ | 7,168 KB | 
| 実行使用メモリ | 22,784 KB | 
| 最終ジャッジ日時 | 2024-06-29 17:34:45 | 
| 合計ジャッジ時間 | 10,682 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge4 / judge2 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 3 | 
| other | AC * 34 | 
コンパイルメッセージ
Syntax OK
ソースコード
N, K = gets.split.map(&:to_i)
S = (2 * N).times.map { gets.chomp }
C = (2 * N).times.map { gets.split.map(&:to_i) }
black_cnt = S.map { |row| row.count('#') }.sum
def greedy(take_cnt)
  p_que = []
  C.each do |row|
    row.each do |v|
      p_que << v
    end
  end
  p_que.sort.pop(take_cnt).sum
end
def solver_even(take_cnt)
  p_que = []
  0.upto(2 * N - 1) do |y|
    0.upto(N - 1) do |x|
      v = C[y][x] + C[y][2 * N - 1 - x]
      p_que << v
    end
  end
  p_que.sort_by! { |v| -v }
  val = 0
  take_cnt.times do
    v = p_que.shift
    val += v
  end
  val
end
values = []
values << greedy(black_cnt)
values << solver_even(black_cnt / 2) + K if black_cnt.even?
puts values.max
            
            
            
        
            
siman