fork download
  1. import java.util.*;
  2. import java.lang.*;
  3. import java.io.*;
  4.  
  5. /* Name of the class has to be "Main" only if the class is public. */
  6. class Ideone
  7. {
  8. public static int makeFrames(ArrayList<Integer> a) {
  9. int n=a.size();
  10. HashMap<Integer,Integer> h=new HashMap<>();
  11. for(int i=0;i<n;i++){
  12. int val=a.get(i);
  13. if(h.containsKey(val)) h.put(val,h.get(val)+1);
  14. else h.put(val,1);
  15. }
  16. if(h.size()==1) return h.get(a.get(0))/2;
  17. //--------------------------------------------------------
  18. int c=0;
  19. ArrayList<Integer> freq=new ArrayList<>();
  20. for(Integer num:h.keySet()){
  21. freq.add(h.get(num));
  22. }
  23. //-------------------------------------------------------
  24. int i=0,j=1,fir=0,sec=0;
  25. System.out.println(freq);
  26. //------------------------------------------------
  27. while(j<freq.size()){
  28. fir=freq.get(i)/2;
  29. //----------------------------------
  30. while(j<freq.size()){
  31. sec=freq.get(j)/2;
  32.  
  33. //System.out.println("FDFSDf "+i+" "+j+" "+fir+" "+sec);
  34. if(fir<1 || sec<1) break;
  35.  
  36.  
  37. //System.out.println(i+" "+j+" "+freq.get(i)+" "+freq.get(j)+" "+fir+" "+sec);
  38. if(sec>=fir){
  39. c+=fir;sec-=fir;
  40. freq.set(j,sec*2);
  41. //System.out.println("sec "+sec);
  42. break;
  43. }
  44. else{
  45. c+=sec;fir-=sec;
  46. freq.set(i,fir*2);
  47. }
  48. j++;
  49.  
  50. }
  51. //-----------------------------------------------------
  52. //System.out.println("c: "+c);
  53. //System.out.println(i+" "+j);
  54.  
  55. i=j;j=j+1;
  56. }
  57. System.out.println(i+" "+j+" "+fir+" "+sec+" c: "+c);
  58. if(fir>=2) c+=fir/2;
  59. else if(sec>=2) c+=sec/2;
  60. return c;
  61. }
  62. public static void main (String[] args) throws java.lang.Exception
  63. {
  64. ArrayList<Integer> a=new ArrayList<>();
  65. Scanner sc=new Scanner(System.in);
  66. while(sc.hasNext())a.add(sc.nextInt());
  67. System.out.println(makeFrames(a));
  68. // your code goes here
  69. }
  70. }
Success #stdin #stdout 0.22s 54216KB
stdin
4 4 4 4 4 3 2 2 3
stdout
[2, 2, 5]
2 3 0 2 c: 1
2