スクリーンショット_2019-04-04_23

文系ギャルが0から始める競技プログラミング#2

Intro

この記事は不定期連載です。
↓最初の一本はこちら↓
文系ギャルが0から始める競技プログラミング#0

↓直前の記事はこちら↓
文系ギャルが0から始める競技プログラミング#1

・ABC123

ABC123がありましたね!
ライブに行っていて参戦できませんでしたが、この記事書きながら問題を解いていきます。
サカナクション最高でした)

・A問題

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

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

入力
入力は以下の形式で標準入力から与えられる。
a
b
c
d
e
k

出力
直接 通信ができないアンテナの組が存在する場合は :(、
存在しない場合は Yay! と出力せよ。
― A - Five Antennas

はっはーん、なるほど!とは行かなかったので、とりあえず書いてみましょう。

なんとなくa-b,a-c,a-d,a-e,b-c...と順番に引き算して、k以上になるかどうかを確かめればいいような気がします
でも手数がそれなりに多いから、きっともっといい方法があるはず
(Twitterやコメントで教えてください!DMも全開放しています。)

よく考えたら、一番遠いAとEが通信できるなら全部いけるやんということに気付きます。
天才だからです。

#include <iostream>
using namespace std;
int main()
{
   int a,b,c,d,e,k;
   cin >> a >> b >> c >> d >> e >> k;

それぞれ数字持ってくるのはもうできるようになりました。

    if(e - a > k){
       cout << ":(" << endl;
   }else{
       cout << "Yay!" << endl;
       
   }
return 0;
}


e-aがkより大きかったら通信できないし、それ以外ならイケると判断しました。
無事正解したので一安心
B問題はまだ何言ってるかわからないレベルなので、他のA問題解いてれて行こうと思います。



Outro

もう何問かA問題を解いて、そろそろB問題デビューしたい今日このごろ、#3に続く。(不定期連載です。)

これは成功と挫折を繰り返し、
タピオカ片手に難問を解く、
ギャルプログラマが生まれるまでの物語である…。

この記事が気に入ったらサポートをしてみませんか?