AtCoder Beginner Contest 392に参加しました
リンク:https://atcoder.jp/contests/abc392
2025/02/08 21:00~22:40(JST)に行われた、AtCoder Beginner Contest(ABC)392に参加しました。この投稿では、その時の話をしていきたいと思っています。
※この投稿では後日撮影した画像を使用しています。
さて、まずはコンテスト開始5分前くらいにパソコンを起動し、VSCodeを開いて雛形を用意し問題を解く準備をしました。

21:00に問題が公開され、さっそく内容を確認し問題を解き始めました。
最初の問題であるA問題の内容は以下の通りでした。

この問題の個人的な解釈として、「3つの要素を適当に並び替えて、3つの要素のうち2つの要素を掛け算したら、残り1つの要素と同じになるということはあり得るか?」って感じだと思います。
この問題に対して私は、「3つの要素のうち最大の1つが、残り2つの要素の積と等しくなるか?」というアプローチで解くことにしました。
そしてそのアプローチで挑んだ結果、見事AC(Accepted)をもらいました!

無事ACを取ったので次のB問題へ。

個人的には、「1以上N以下の整数のうち、数列にないものを列挙してね、あとついでに、数字がいくつ欠けているかも出力してね」って感じに解釈しました。
なので「まず昇順ソートして、ないものを数列に追加。追加後まとめて出力」って感じで行くことにしました。
ただ、「数列の中に指定の数(例えば10)はあるか?」というものを調べる方法が知らなかったので、インターネットで検索してしまいました… 一応AtCoderはインターネットでの検索は認めていますが…
まあ最終的に、検索しつつプログラムを書いて提出。なんとかACしました。

Bも終わったので次のC問題へ。

問題の解釈に少し時間をかけてしまいましたが、要は「ゼッケンiをつけている人が見ている人の、書かれているゼッケンの番号は?」って感じのようでした。
「ゼッケンiを着ている人は何番目の人?」といったのがネックになるだろうと感じた私は、C++のmapを使って住所録的なものを作り、それを参照することで高速化しようと考えました。(その後公式解説を見た結果、住所録を作るほうが無駄だったことに気づきました)
これでいけるよな…?と思ったので提出したところ、ACをもらいました。

さて、個人的に苦戦中のD問題。実はブログ公開時点ではまだACしていません。

悩みに悩み続けて、最初に提出したのは終了30分前、しかもプログラムはかなり非効率で、結局時間制限に間に合わず、その後プログラムを書き直しましたが、それも効率性が悪いと思っており、「多分TLE(Time Limit Exceed)になるんだろうな…」と思いながら提出。結果は案の定TLEでした。
コード部分

結果部分

ただ、ここでコードを直そうにも終了5分前だったので、もう直す気力も出ず、最終的にコンテストは終了。
最終的にパフォーマンスは487であり、順位は6451位でした。
レートは165から203に上がりましたが、D問題が解けなかったのが悔しかったです!

次回のコンテストは2月15日にあるので、それまでまた精進したいと思います!
ここまで見ていただきありがとうございました! また次回をお楽しみに!