fork download
  1. #include<iostream>
  2. #include<map>
  3. #include<set>
  4. #include<vector>
  5. #include<algorithm>
  6.  
  7. using namespace std;
  8.  
  9. int main()
  10. {
  11. int n, r, i;
  12. cin >> n;
  13. map <int, int> count;
  14. for (i = 0; i < n; ++i)
  15. {
  16. cin >> r;
  17. count[r]++;
  18. }
  19. set <pair<int, int> > S;
  20. for (auto elem: count)
  21. S.insert(make_pair(elem.second, elem.first));
  22. vector <int> Answer;
  23. int C[3];
  24. int R[3];
  25. while (S.size() >= 3)
  26. {
  27. for (i = 0; i < 3; ++i)
  28. {
  29. auto it = S.end();
  30. --it;
  31. C[i] = it->first;
  32. R[i] = it->second;
  33. S.erase(it);
  34. Answer.push_back(R[i]);
  35. }
  36. for (i = 0; i < 3; ++i)
  37. {
  38. if (C[i] != 1)
  39. S.insert(make_pair(C[i] - 1, R[i]));
  40. }
  41. }
  42. cout << Answer.size() / 3 << endl;
  43. for (i = 0; i < Answer.size(); i += 3)
  44. {
  45. cout << Answer[i] << " " << Answer[i + 1] << " " << Answer[i + 2] << endl;
  46. }
  47. return 0;
  48. }
Success #stdin #stdout 0.01s 5280KB
stdin
3
2 2 3
stdout
0