ねむーの日記~AtCoderな日々~

福岡に住むプログラミング好きのブログです!

【プログラミングコンテスト】AtCoder Beginner Contest 123①

今日は選挙に行ってきました、ねむーです。

今回はAtCoder(https://atcoder.jp/contests/abc123)にて開催されました、AtCoder Beginner Contest 123 A問題「A - Five Antennas」の問題と僕との戦闘記です。

0.はじめに

今回も、プログラミング言語C#を使用しています。

1.問題文

AtCoder 市には、 5 つのアンテナが一直線上に並んでいます。これらは、西から順にアンテナ A , B , C , D , E と名付けられており、それぞれの座標は a , b , c , d , e です。 2 つのアンテナ間の距離が k 以下であれば直接通信ができ、 k より大きいと直接通信ができません。 さて、直接 通信ができないアンテナの組が存在するかどうか判定してください。 ただし、座標 p と座標 q ( p < q ) のアンテナ間の距離は q − p であるとします

2.制約

  • a , b , c , d , e , k は 0 以上 123 以下の整数
  • a < b < c < d < e

3.入力例

  • 入力
1
2
4
8
9
15
  • 出力
Yay!
  • 入力
15
18
26
35
36
18
  • 出力
:(

4.初見の感想

  • 条件判定で解けそうです

5.学びポイント

  • 「5つの数字から2つ選んだ時の差が全てk以下」

→素直に実装すると10条件になる

→a<b<c<d<eの条件を使ってa-eだけ考えましょうね(本番は気づかなかった)

  • 「以上」ですのでイコールを含みます!(本番の時見逃してWA出しました)

6.全コード

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main(string[] args)
    {
        string input = Console.ReadLine();
        int a = int.Parse(input);
        input = Console.ReadLine();
        int b = int.Parse(input);
        input = Console.ReadLine();
        int c = int.Parse(input);
        input = Console.ReadLine();
        int d = int.Parse(input);
        input = Console.ReadLine();
        int e = int.Parse(input);
        input = Console.ReadLine();
        int k = int.Parse(input);
        if (Math.Abs(a - e) <= k) { Console.WriteLine("Yay!"); }
        else { Console.WriteLine(":("); }
    }
}

7.最後に

問題文はしっかり読みましょう!(めっちゃ反省してます)