見出し画像

ABC160【C問題の復習】練習をサボっていたら、レートは大幅に下がった

3月28日に、競技プログラミングサイトAtCoderで開催された競技プログラミングコンテスト「AtCoder Beginner Contest 160」に参加した。

【今回の結果】
     順位:7451 位(参加者:約 9745 名 上位 76 %くらい)
    レート:666(前回:711 前回比:-45)
パフォーマンス:227(前回:737)

全6問出題され、A、B、C問題はACできた。しかし、C問題で90分以上つかってしまい、さらに、3WAだったのでパフォーマンスはよくなかった。前回は上位30%くらいを目標にがんばろうと言っていた自分がなんとも情けない結果だった。

レートも大幅ダウン。AtCoderだから-45で済んだものの...。

今回は、はまってしまったC問題の復習する。

【C問題の復習】

問題文は以下のリンクをご確認ください。

といってもこの問題は、85%以上の方々がACしている問題。今の自分にとってはさっとACしないといけない。
この問題は、円周から各家の距離が最も大きいものを引けばいい。
それだけ。
ただ、家と家との間に0がある場合、すなわち、A_NとA_1の間については、距離の計算に注意する必要がある。

ACしたコードは以下の通りです。

#include <bits/stdc++.h>
using namespace std;
int main() {

 int K, N;
 cin >> K >> N;

 vector<int> A(N);
 for (int i = 0; i < N; i++) {
   cin >> A[i];
 }

 int mx = 0;
 for (int i = 0; i < N; i++) {
   // 家と家の距離の最大を探す
   mx = max(mx, A[i + 1] - A[i]);
   // 家と家の間に0がある場合
   if (i == N - 1) {
     mx = max(mx, K - A[i] + A[0]);
   }
 }

 cout << K - mx << endl;
 return 0;
}

う〜ん。
これがすっとできなかったのはショックだな。
ここ数週間、練習量は確かにすごく少なくなっているので、それが成績にものに出た感じだ。

次回のABCは4月4日(土)。
頻繁にABCを開催してくれているのは、ありがたいがもうちょっと練習を積んでから臨みたいなぁ。
このままだとまたレート下がるぞ、これ。
なんとかしたい。

この記事が気に入ったら、サポートをしてみませんか?気軽にクリエイターを支援できます。

ありがとうございます!
3
三重県伊勢市でiOS・AndroidアプリのUX設計・UIデザイン・実装、Webサイト、Webアプリの情報設計、UIデザイン、実装を行なっています。また、競技プログラミングに参加したり、読書をしたり、2羽の文鳥と遊んだり、写真を撮ったり、洋菓子を作ったりしています。

この記事が入っているマガジン

AtCoder参加記録
AtCoder参加記録
  • 25本

AtCoderのABC等に参加した記録です。

コメントを投稿するには、 ログイン または 会員登録 をする必要があります。