問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
友人に贈るギフトを 2 品選ぶことにしました。お店に安い順(昇順)に並んでいる商品の値段が整数列 A_1, A_2, ..., A_N として、ちょうど使い切りたい予算を表す整数 S 円が与えられます。
A_i + A_j = S (i < j)となる 2 つの位置の組が存在するかを判定し、存在すれば Yes、存在しなければ No を出力してください。
各 i について、S - A_i が A の中に存在するかを二分探索で判定してください。
入力は以下のフォーマットで与えられます。
N S
A_1 A_2 ... A_N
合計が S 円になる 2 品の組み合わせが存在する場合は Yes を、存在しない場合は No を 1 行に出力してください。出力の最後は改行し、余計な文字、空行を含んではいけません。
すべてのテストケースにおいて、以下の条件をみたします。
・1 ≦ N ≦ 10000
・1 ≦ A_i ≦ 1000000000
・1 ≦ S ≦ 2000000000
・A は昇順に並んでいる(A_1 ≦ A_2 ≦ ... ≦ A_N)
5 12
1 3 5 7 9
Yes
4 100
1 2 3 4
No