トピックリンク:https://pintia.cn/problem-sets/994805342720868352/problems/994805432256675840
题目描述
エヴァは、火星のようないくつかの他の惑星を含む、宇宙上全てから収集コインが大好き。ある日、彼女が支払とコインのすべての種類を受け入れることができるユニバーサルショッピングモールを訪問しました。しかし、支払いの特別な要件がありました:各法案のために、彼女は唯一の正確な金額を支払うことを、正確に2枚のコインを使用することができます。彼女は彼女のように多くの5 ^ 10のようにコインを持っているので、彼女は間違いなくあなたの助けを必要とします。あなたが、彼女はそれを支払うために2枚のコインを見つけることができるかどうか、お金の任意の金額を、彼女に言うことになっています。
输入
各入力ファイルは、1つのテストケースが含まれています。N(≤10^ 5、コインの総数)とM(≤10^ 3、エヴァが支払わなければならない金額):それぞれの場合のために、最初の行は、2つの正数を含んでいます。2行目は、もはや500のすべてよりも空間によって分離されている行の数字すべての正数であるコインのN面値を含みます。
输出
各テストケースについて、2つの顔の値がv 1つの行で印刷する
(スペースで区切られた)1とV 2を、その結果V 1 + V 2
= MとV 1 ≤V2。そのようなA溶液が一意でない場合、出力最小V 1を有するもの。解がない場合、出力はありませんソリューションの代わりに。
サンプル入力
8 15
。1. 4. 11 2 15 2 8 7
サンプル出力
411
コード
#include <cstdio>
#include <algorithm>
using namespace std;
int main() {
int n, m, a[100010];
bool flag = false;
scanf("%d%d", &n, &m);
for(int i = 0; i < n; i++)
scanf("%d", &a[i]);
sort(a, a + n);
for(int i = 0 , j = n - 1; i < j;) {
if(a[i] + a[j] == m) {
printf("%d %d\n", a[i], a[j]);
flag = true;
break;
}
if(a[i] + a[j] < m)
i++;
if(a[i] + a[j] > m)
j--;
}
if(flag == false)
printf("No Solution\n");
return 0;
}