読者です 読者をやめる 読者になる 読者になる

パソコン甲子園裏本選について

 パソコン甲子園裏本選(予選落ちしたチームも同じ条件でオンライン本選に臨める)が昨日ありました。私のチームのパートナーが1時間ほどで帰ってしまったため残り3時間ほどは私一人で寂しかったのですが、予選落ち校では35位という成績を残せました。ここでは解けた問題についていろいろ言っていこうと思います。(解けたのは1~3番、家に帰ってちょっと書きかえて解けたのが10番)

 

1番「4つ入力された数値から長方形が作れるかどうか判定しろ」

 プログラム自体はソートして前2個と後ろ2個が等しければyes、そうでなければnoと出力するだけだったのですが、trueとfalseで出力したため提出回数が1回増えました。これはマジでもったいないミス

 

2番「12個入力された数値から直方体が作れるかどうか判定しろ」

 ソートして4つごとに等しいかどうか判定してyes noを返すという感じでときました。

これは特に問題なく通過

 

3番「入力された異なる4つの値を当てはめて(A+B)/(C-D)の最大値を求めよ」

 分母を優先する場合と分子を優先する場合に分けて組みました。差の最小は、ソートした後探索して求め、和の最大は昇順にソートして末尾の要素とその前の要素をとりました。(重複があってはならないので場合分けが必要だった)

問題文に

cout.setf(ios_base::fixed,ios_base::floatfield);

cout << result << endl;

って書けば小数点以下も表示できる

って書いてあったのにそのとおりに書いてもうまく行かず、結局

cout << fixed << result << endl;

って書きました。(これのせいで提出回数3回増えた)

ほんとにクソ

(あとから思い出したんだけどこれキャストして代入したらうまく行ったんだった int型のほうが強いんですねぇ)

 

10番「チェス盤を移動するアリが落下する順位を返すプログラムを作れ」

 予選落ち勢ではだれも解けていなかった問題です。プランとしてはそれぞれのアリが落下する時間を求めて配列に格納し、それに順位をつけて出力しました。

 アリの挙動もそこまで複雑ではなかったので10番という番号のわりにそこまで難しくは無かったと思います。(時間内に解けませんでしたが)

 

http://web-ext.u-aizu.ac.jp/pc-concours/2016/download/pck2016f_all.pdf

問題はこちらです