Guest User

Untitled

a guest
Nov 18th, 2017
234
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.66 KB | None | 0 0
  1. public class TopXorerEasy {
  2.  
  3. public int maximalRating(int a, int b, int c) {
  4.  
  5. int[][][][] dp = new int[30][2][2][2];
  6.  
  7. for (int i = 0; i < 30; i++)
  8. for (int x = 0; x < 2; x++)
  9. for (int y = 0; y < 2; y++)
  10. for (int z = 0; z < 2; z++)
  11. dp[i][x][y][z] = -1;
  12.  
  13.  
  14. int ans = rec(29, 0, 0, 0, a, b, c, dp);
  15.  
  16. return ans;
  17. }
  18.  
  19. int rec(int i, int x, int y, int z, int a, int b, int c, int[][][][] dp) {
  20. if (dp[i][x][y][z] != -1)
  21. return dp[i][x][y][z];
  22.  
  23. if (i == 0) {
  24. if (x == 1 || y == 1 || z == 1)
  25. return dp[i][x][y][z] = 1;
  26.  
  27. if ((a & 1) == 1 || (b & 1) == 1 || (c & 1) == 1)
  28. return dp[i][x][y][z] = 1;
  29.  
  30. return dp[i][x][y][z] = 0;
  31. }
  32.  
  33. int ans = 0;
  34. for (int l = 0; l < 2; l++) {
  35. for (int m = 0; m < 2; m++) {
  36. for (int n = 0; n < 2; n++) {
  37. int ex = 0;
  38.  
  39. if ((((1 << i) & a) == 0) && x == 0 && l == 1) {
  40. continue;
  41. }
  42.  
  43. if ((((1 << i) & b) == 0) && y == 0 && m == 1) {
  44. continue;
  45. }
  46.  
  47. if ((((1 << i) & c) == 0) && z == 0 && n == 1) {
  48. continue;
  49. }
  50.  
  51. if (x == 1 || ((((1 << i) & a) != 0) && x == 0 && l == 0)) {
  52. ex = (1 << i);
  53. }
  54.  
  55. if (y == 1 || ((((1 << i) & b) != 0) && y == 0 && m == 0)) {
  56. ex = (1 << i);
  57. }
  58.  
  59. if (z == 1 || ((((1 << i) & c) != 0) && z == 0 && n == 0)) {
  60. ex = (1 << i);
  61. }
  62.  
  63. ans = Math.max(ans, ex + rec(i - 1, l, m, n, a, b, c, dp));
  64. }
  65. }
  66. }
  67.  
  68. return dp[i][x][y][z] = ans;
  69.  
  70. }
  71. }
Add Comment
Please, Sign In to add comment