fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <random>
  5. #include <cstdint>
  6.  
  7.  
  8. typedef std::vector<std::uint64_t> DType;
  9.  
  10. bool ShowVector(const DType &D) {
  11. for (auto& o : D) {
  12. std::cout << o << ' ';
  13. }
  14.  
  15. std::cout << std::endl;
  16.  
  17. return true;
  18. }
  19.  
  20. DType MakeVector(const std::size_t& N,std::uint32_t S) {
  21. //std::random_device rd;
  22. std::mt19937 mt(S);
  23. std::uniform_int_distribution<std::uint16_t> ui(0, 8);
  24. DType D;
  25.  
  26. for (std::size_t i = 0; i < N; i++)D.push_back(ui(mt));
  27.  
  28. return D;
  29. }
  30.  
  31. std::size_t CaseA(const DType& D) {//最初これを考えた。
  32. DType C = D;
  33.  
  34. std::sort(C.begin(), C.end());
  35. auto it = std::unique(C.begin(), C.end());
  36. C.erase(it, C.end());
  37. ShowVector(C);
  38. return D.size()-C.size();
  39. }
  40.  
  41. std::size_t CaseB(const DType& D) {//つぎこれを考えた。
  42. DType C = D;
  43.  
  44. std::sort(C.begin(), C.end());
  45. ShowVector(C);
  46. return D.size()-C.size();
  47. }
  48.  
  49.  
  50. int main() {
  51. DType D = MakeVector(16,0);
  52. std::size_t C = 0;
  53.  
  54. std::cout << "First!:";
  55. ShowVector(D);
  56.  
  57. std::cout << "CaseA:";
  58. C = CaseA(D);
  59. std::cout << '@' << C << std::endl;
  60.  
  61. std::cout << "CaseB:";
  62. C = CaseB(D);
  63. std::cout << '@' << C << std::endl;
  64.  
  65. return 0;
  66. }
Success #stdin #stdout 0s 4324KB
stdin
Standard input is empty
stdout
First!:4 5 6 7 5 7 4 7 3 5 5 3 3 2 8 0 
CaseA:0 2 3 4 5 6 7 8 
@8
CaseB:0 2 3 3 3 4 4 5 5 5 5 6 7 7 7 8 
@0