题解:P11128 【MX-X5-T0】「GFOI Round 1」Hypnotize

· · 题解

可以对于每个数 a_i,用一个 map 来记录他们出现过。那么只需要将所有数存进 map 后,对于每个数 a_i,查询 a_i+k 是否存在即可。时间复杂度 \Theta(n\log n)\log nmap 常数。

#include <bits/stdc++.h>
using namespace std;
int a[100005];
map<int,int> mp;
int main() {
    int n,k; cin >> n >> k; for(int i = 1;i <= n;i++) { cin >> a[i]; mp[a[i]]++; }
    for(int i = 1;i <= n;i++) {
        if(mp[a[i]+k]) {
            cout << "Yes"; exit(0);
        }
    }
    cout << "No\n";
    return 0;
}