結果
| 問題 | 
                            No.1360 [Zelkova 4th Tune] 協和音
                             | 
                    
| コンテスト | |
| ユーザー | 
                             gmm_tea
                         | 
                    
| 提出日時 | 2021-01-22 21:54:49 | 
| 言語 | Ruby  (3.4.1)  | 
                    
| 結果 | 
                             
                                AC
                                 
                             
                            
                         | 
                    
| 実行時間 | 587 ms / 2,000 ms | 
| コード長 | 593 bytes | 
| コンパイル時間 | 1,357 ms | 
| コンパイル使用メモリ | 7,552 KB | 
| 実行使用メモリ | 16,640 KB | 
| 最終ジャッジ日時 | 2024-12-28 00:02:04 | 
| 合計ジャッジ時間 | 15,730 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge5 / judge1 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 47 | 
コンパイルメッセージ
Syntax OK
ソースコード
n=gets.to_i
a=gets.split.map(&:to_i)
b=[]
n.times do
  b << gets.split.map(&:to_i)
end
# n=18
# a=[1000000000]*n
# b=[]
# n.times do
#   b << [1000000000]*n
# end
d=[0,a[0]]
dk=2
dkk=1
dki=0
m=a[0]
mi=1
2.upto(2**n-1) do |di|
  if di==dk
    dki+=1
    dkk=dk
    dk*=2
  end
  # dki は今の2進数桁数 - 1
  # dk は次に位が上がるとき
  c=a[dki]+d[di-dkk]
  (dki-1).downto(0) do |i|
    if di[i]==1
      c+=b[dki][i]
    end
  end
  d << c
#  p [di.to_s(2),c]
  if m<c
    m=c
    mi=di
  end
end
puts m
l=[]
n.times do |i|
  if mi[i]==1
    l << i+1
  end
end
puts l.join(" ")
            
            
            
        
            
gmm_tea