fork download
  1. #include<iostream>
  2. #include<cstdlib>
  3.  
  4. using namespace std;
  5.  
  6. int table[10];
  7.  
  8. void largest_number(int a[],int len)
  9. {
  10. int rem[3] = {0};
  11. for(int i=0;i<10;i++)
  12. table[i] = 0;
  13.  
  14. int sum = 0;
  15. for(int i=0;i<len;i++)
  16. {
  17. sum += a[i];
  18. table[a[i]]++;
  19. rem[a[i]%3]++;
  20. }
  21.  
  22. if(sum%3 == 1)
  23. {
  24. if(rem[1] < 1 && rem[2]<2)
  25. { cout << "not possible \n";
  26. return;
  27. }
  28. if(rem[1] > 0)
  29. {
  30. int remove_element = 1;
  31. for(int i=0;i<10 && remove_element > 0;i++)
  32. {
  33. if(i%3 == 1 && table[i] > 0)
  34. { table[i]--;
  35. remove_element--;
  36. }
  37. }
  38. }
  39. else
  40. {
  41. int remove_element = 2;
  42. for(int i=0;i<10 && remove_element > 0;i++)
  43. {
  44. if(i%3 == 2 && table[i] > 0)
  45. { table[i]--;
  46. remove_element--;
  47. }
  48. }
  49.  
  50. }
  51. }
  52. if(sum%3 == 2)
  53. {
  54. if(rem[2]<1 && rem[1]<2)
  55. { cout << "not possible \n";
  56. return;
  57. }
  58. if(rem[2] > 0)
  59. {
  60. int remove_element = 1;
  61. for(int i=0;i<10 && remove_element > 0;i++)
  62. {
  63. if(i%3 == 2 && table[i] > 0)
  64. { table[i]--;
  65. remove_element--;
  66. }
  67. }
  68. }
  69. else
  70. {
  71. int remove_element = 2;
  72. for(int i=0;i<10 && remove_element > 0;i++)
  73. {
  74. if(i%3 == 1 && table[i] > 0)
  75. { table[i]--;
  76. remove_element--;
  77. }
  78. }
  79.  
  80. }
  81. }
  82.  
  83. for(int i=9;i>=0;i--)
  84. while(table[i]--)
  85. cout << i << " ";
  86. cout << endl;
  87. }
  88.  
  89. int main()
  90. {
  91. int a[] = {8,1,7,6,0};
  92. int len = sizeof(a)/sizeof(a[0]);
  93. largest_number(a,len);
  94.  
  95. return 0;
  96. }
Success #stdin #stdout 0s 3340KB
stdin
Standard input is empty
stdout
8 7 6 0