Hatena::Grouptopcoder

れんしゅうちょう。 このページをアンテナに追加 RSSフィード

 | 

2011-05-09Google Code Jam 2011 Qualification Round

Problem A. Bot Trust 23:31

問題

OrangeとBlueのロボットがなんか動くから、シミュレーションせよと。

問題文は比較的読めた。

各要求に対して、1回で更新しようとしてバグらせて、sampleが通らない状況に。

一度頭を冷やす為、Bへ行く。

その後Bで詰み、C→Dを経て帰ってくる。

ボタンが100までしか無い事に気付き、毎秒でシミュレートする事にしたら、10分で解けた。

と思いきや、smallでWA.

更新処理を何か修正してsmallをAC→そのままlargeも提出。

q = gets.split(" ")
n = q.shift.to_i
seq=[]
for i in 0...n
    seq.push [q[i*2],q[i*2+1].to_i]
end
posO=1
posB=1
seqO=seq.find_all{|a|a[0]=="O"}.map{|a|a[1]}
seqB=seq.find_all{|a|a[0]=="B"}.map{|a|a[1]}
res = 0
until seq.empty?
    res += 1
    flg = false
    if !seqO.empty?
        if posO < seqO[0]
            posO += 1
        elsif posO > seqO[0]
            posO -= 1
        elsif seq[0][0] == "O"
            flg = true
            seq.shift
            seqO.shift
        end
    end
    if !seqB.empty?
        if posB < seqB[0]
            posB += 1
        elsif posB > seqB[0]
            posB -= 1
        elsif seq[0][0] == "B" && !flg
            seq.shift
            seqB.shift
        end
    end
end
res

ifとunlessが混在していてなんかアレですね。

ついでに、posO <=> seqO[0]とかを使えば格好良かった気がします。

まぁバグの温床になりそうですが。

あと、OrangeのOとゼロが見にくくて死ねばいいと思いましたまる。

Redとかにして下さいよ、Google先生・・・

kerlonkerlon2011/05/09 23:43まずAのときに、何これークリックしてみよー^q^ → 1 wrong try
次にBに、「出来た(キリッ」 → アウトプット作り忘れてて 1 wrong try

Mi_SawaMi_Sawa2011/05/09 23:45>kerlonさん
まぁ慣れる意味も含めてのQRだろうし、この先やらかさなきゃいいんじゃないかなw

 |