题目来源:问题 - 2107B - Codeforces
这道题其实只需要判断两个要点,首先判断一下最大值-1后与最小值的差值是否>k,这里有个小细节,当有多个最大值时,可以先将一个最大值-1后再排序,判断新数组最大值与最小值的差值。如果>k,那么杰瑞赢,如果<k那么继续下面的判断。
根据示例可以看出,不管k有多大,只需要判断所有元素的和的奇偶性就可以直接判断,当元素和为偶数,那么杰瑞赢,反之汤姆赢
#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{int t;cin>>t;while(t--){int n,k;cin>>n>>k;int sum=0;vector<int>a(n);for(int i=0;i<n;i++){int x;cin>>x;a[i]=x;sum=sum+x;}sort(a.begin(),a.end());a[n-1]=a[n-1]-1;sort(a.begin(),a.end());if(a[n-1]-a[0]>k){cout<<"Jerry"<<endl;continue;}if(sum%2==0){cout<<"Jerry"<<endl;}else{cout<<"Tom"<<endl;}}return 0;
}