結果

問題 No.334 門松ゲーム
ユーザー Tsuneo Yoshioka
提出日時 2016-01-15 23:12:53
言語 Ruby
(3.4.1)
結果
AC  
実行時間 119 ms / 2,000 ms
コード長 1,310 bytes
コンパイル時間 43 ms
コンパイル使用メモリ 7,424 KB
実行使用メモリ 12,544 KB
最終ジャッジ日時 2024-09-19 19:27:31
合計ジャッジ時間 2,128 ms
ジャッジサーバーID
(参考情報)
judge1 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 13
権限があれば一括ダウンロードができます
コンパイルメッセージ
Main.rb:57: warning: ambiguous first argument; put parentheses or a space even after `-' operator
Syntax OK

ソースコード

diff #

# Here your code !

N=gets.to_i
@ks=gets.split.map(&:to_i)
# p @ks
@memo={}
def go(mask, first)
    # puts "start: mask=#{mask}"
    if @memo[mask] != nil
        return @memo[mask]
    end

    result = false
    (0...N).each{|a|

        if(mask[a])
            next
        end
        mask[a]=true
        (a+1...N).each{|b|
            if(mask[b])
                next
            end
            mask[b]=true
            (b+1...N).each{|c|

                if(mask[c])
                    next
                end
                mask[c]=true
                #puts "c: mask=#{mask}, a,b,c=#{a}, #{b}, #{c}"

                if @ks[a]==@ks[b] || @ks[b]==@ks[c] || (@ks[b]!=([@ks[a],@ks[b],@ks[c]]).max && @ks[b]!=([@ks[a],@ks[b],@ks[c]]).min)
                    mask[c]=nil
                    next
                end
                ret = go(mask, false)
                if ret == false
                    result = true
                    if first
                        puts [a,b,c].join(" ")
                        exit
                    end
                end
                mask[c]=nil
            }
            mask[b]=nil
        }
        mask[a]=nil
    }
    # puts "end: mask=#{mask}, result=#{result}"
    @memo[mask]=result
    return result
end

go(Array.new(N,nil), true)
puts -1
0