区赛的水题
#include<stdio.h> #include<stdlib.h> int a[110],b[110]; int cmp(const void *a,const void *b) { return *(int *)a-*(int *)b; } int main() { int t,n,m,i,j,x,y,sum,min,k; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); for(i=0;i<n;i++) scanf("%d",&a[i]); qsort(a,n,sizeof(a[0]),cmp); for(i=0;i<m;i++) scanf("%d",&b[i]); for(i=0;i<m;i++) { min=10000,k=-1; for(j=0;j<n;j++) { x=b[i];y=a[j];sum=0; while(x!=0||y!=0) { if(x%2!=y%2) sum++; x/=2; y/=2; } if(min>sum) { min=sum; k=j; } } printf("%d\n",a[k]); } } return 0; }