Subtract Operation-Codeforces
投稿日: 更新日:
問題
個の整数列が与えられます。数列の中からを選び取り除きます。そして数列に残っている値すべてに対してだけ減算します。最後に要素が1つだけ残るのでその値をにできるか判定してください。
解法
数列を考えてみます。
となり、次の減算で前回の減算を打ち消すことが分かります。したがって、2つの組を選びその差がとなるかを判定すればよい問題となりました。
実装
#include <bits/stdc++.h>
using namespace std;
string solve(){
int n, k;
cin >> n >> k;
vector<int> a(n);
for(int i = 0;i < n; ++i){
cin >> a[i];
}
sort(a.begin(), a.end());
for(int i = 0;i < n; ++i){
if(binary_search(a.begin(), a.end(), a[i] - k)){
return "YES";
}
}
return "NO";
}
int main(){
int t;
cin >> t;
while(t--){
cout << solve() << endl;
}
return 0;
}