#include<stdio.h> #include<stdlib.h> int a[1000001]; int b[500001]; int c[500001]; int n; int main(int argc, char *argv[]) { while(~scanf("%d",&n)) { for(int i=0;i<n;++i) { scanf("%d",&a[i]); } int tmp=a[0]; for(int i=1;i<n;++i) { tmp^=a[i]; } int x=tmp&(-tmp); int j,k; int i; for(i=0,j=0,k=0;i<n;++i) { if((a[i]|x)==a[i]) { b[j++]=a[i]; } else { c[k++]=a[i]; } } int bx=b[0]; int cx=c[0]; for(int i=1;i<j;++i){ bx^=b[i]; } for(int i=1;i<k;++i) { cx^=c[i]; } if(bx>cx) { printf("%d %d\n",cx,bx); } else printf("%d %d\n",bx,cx); } return 0; }
原文地址:http://blog.csdn.net/wdkirchhoff/article/details/42030307