fork download
  1. #include <cstdio>
  2. #include <algorithm>
  3. using namespace std;
  4.  
  5. int arr[100000];
  6.  
  7. long long ans(int l,int r,int bit) {
  8. if (bit==-1) {
  9. return 0;
  10. }
  11. int cut;
  12. bool flag=false;
  13. int prev=(arr[l]>>bit)%2;
  14. if ((arr[l]>>bit)%2==1||(arr[r]>>bit)%2==0) {
  15. return ans(l,r,bit-1);
  16. }
  17. for(int i=l;i<=r;i++) {
  18. if ((arr[i]>>bit)%2==1) {
  19. cut=i;
  20. break;
  21. }
  22. }
  23. return (1<<bit)+min(ans(l,cut-1,bit-1),ans(cut,r,bit-1));
  24. }
  25.  
  26. int main(void) {
  27. int n;
  28. scanf("%d\n",&n);
  29. for(int i=0;i<n;i++) {
  30. scanf("%d ",&arr[i]);
  31. }
  32. sort(arr,arr+n);
  33. printf("%lld",ans(0,n-1,29));
  34. return 0;
  35. }
Success #stdin #stdout 0s 4528KB
stdin
3
1 2 3
stdout
2