很明显这是Nim游戏的博弈规则,加上了一点小技巧 。

回忆博弈论,当所有数异或不为0的时候,先手必胜 。

而如果异或为0,如果k不为0,即我们可以进行操作,那么我们只要有一个数能让我们拿走k个,就能使得异或不为0。

#include <bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{
    int n , k ; cin >> n >> k ; 
    vector<int>a(n);
    int x = 0 ; 
    int maxi = 0 ; 
    for(int i = 0 ; i < n ; i++)
    {
        cin >> a[i] ;  
        x ^= a[i] ; 
        maxi = max(maxi , a[i]) ; 
    }
    if(x != 0)
    {
        cout << "YES" << endl ; 
    }
    else 
    {
        if(k != 0 && maxi >= k)
        {
            cout << "YES" << endl  ;
        }
        else 
        {
            cout << "NO" << endl ;
        }
    }
}