直接贪心就可以了,接收的时候把0都加上k,每次从最小的数开始找,如果有多个相同的,那么保留一个,其他的都加上k
#include<stdio.h>
#include<algorithm>
using namespace std;
int a[105];
int main(){
#ifndef ONLINE_JUDGE
freopen("in.txt","r",stdin);
#endif
int T,n,k;
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&k);
for(int i=0;i<n;i++) {
scanf("%d",&a[i]);
if(a[i]==0) a[i]+=k;
}
sort(a,a+n);
int flag=1;
for(int i=0;i<n;i++){
if(a[i]==i+1){
int j=1;
while(a[i+j]==a[i]){
a[i+j]+=k;
j++;
}
sort(a+i,a+n);
}
else{
flag=0;
printf("Tom\n");
break;
}
}
if(flag==1) printf("Jerry\n");
}
}