fork(1) download
  1. class Ideone {
  2. public static int task(int[] A, int[] B) {
  3. if( Math.min(A.length, B.length) * 6 < Math.max(A.length, B.length) )
  4. return -1;
  5. int diff=0;
  6. int[] statistics=new int[6];
  7. for(int item : A) {
  8. diff+=item;
  9. statistics[item-1]++;
  10. }
  11. for(int item : B) {
  12. diff-=item;
  13. statistics[6-item]++;
  14. }
  15. if(diff<0) {
  16. diff=-diff;
  17. for(int i=0;i<3;i++) {
  18. int swap=statistics[i];
  19. statistics[i]=statistics[5-i];
  20. statistics[5-i]=swap;
  21. }
  22. }
  23.  
  24. int changes=0;
  25. int i=5;
  26. while(diff>0){
  27. int step = Math.min(statistics[i], (diff+i-1)/i);
  28. changes += step;
  29. diff -= i*step;
  30. i--;
  31. }
  32. return changes;
  33. }
  34.  
  35. public static void main (String[] args) {
  36. System.out.println(task(new int[]{1,2,3,4,3,2,1},new int[]{6}));
  37. System.out.println(task(new int[]{6},new int[]{1,2,3,4,3,2,1}));
  38. System.out.println(task(new int[]{2,3,1,1,2},new int[]{5,4,6}));
  39. System.out.println(task(new int[]{5,4,6},new int[]{2,3,1,1,2}));
  40. System.out.println(task(new int[]{5,4,1,2,6,6},new int[]{2}));
  41. System.out.println(task(new int[]{2},new int[]{5,4,1,2,6,6}));
  42. }
  43. }
Success #stdin #stdout 0.06s 32204KB
stdin
Standard input is empty
stdout
-1
-1
2
2
6
6