文系ギャルが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に続く。(不定期連載です。)
これは成功と挫折を繰り返し、
タピオカ片手に難問を解く、
ギャルプログラマが生まれるまでの物語である…。
この記事が気に入ったらサポートをしてみませんか?