Advertisement
Guest User

Untitled

a guest
Nov 19th, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.94 KB | None | 0 0
  1.  
  2. int TrueSolution(std::vector<int> vec) {
  3. std::sort(vec.begin(), vec.end());
  4. std::vector<int> nn;
  5. int same = 1;
  6. for (int i = 1; i < vec.size(); ++i) {
  7. if (vec[i] == vec[i - 1]) {
  8. same++;
  9. } else {
  10. nn.push_back(same);
  11. same = 1;
  12. }
  13. }
  14. nn.push_back(same);
  15. std::vector<int> aa, bb;
  16. aa.resize(nn[0] + 1, 0);
  17. aa[aa.size() - 1] = 1;
  18. // for (int j = 0; j < aa.size(); ++j)
  19. // std::cerr << aa[j] << " ";
  20. // std::cerr << std::endl;
  21. for (int ii = 1; ii < nn.size(); ++ii) {
  22. bb.clear();
  23. bb.resize(nn[ii] + aa.size() + 1, 0);
  24. for (int l = 0; l < aa.size(); ++l) {
  25. for (int j = 0; j <= l; ++j) {
  26. bb[nn[ii] + j] += aa[l];
  27. bb[nn[ii] + j] %= 123456789;
  28. }
  29. }
  30. aa = bb;
  31. }
  32. int ans = 0;
  33. for (int i = 0; i < aa.size(); ++i) {
  34. ans += aa[i];
  35. ans %= 123456789;
  36. }
  37. return ans;
  38. }
  39.  
  40. vector<int> GenerateArr(std::mt19937* gen, int size) {
  41. vector<int> res;
  42. std::uniform_int_distribution dist(1, 100);
  43.  
  44. res.reserve(size);
  45. for (int i = 0; i < size; ++i) {
  46. res.push_back(dist(*gen));
  47. }
  48. return res;
  49. }
  50.  
  51. void Test() {
  52. vector<int> arr;
  53. std::mt19937 gen(143);
  54. for (int i = 1; i <= 400; ++i) {
  55. for (int j = 0; j < 10; ++j) {
  56. arr = GenerateArr(&gen, i);
  57. std::sort(arr.begin(), arr.end());
  58. auto calcRes = calc(arr);
  59. auto myRes = GetTreesCount(arr);
  60. if (calcRes == myRes) {
  61. std::cerr << "OK " << i << "-" << j + 1 << std::endl;
  62. } else {
  63. std::cerr << "FAIL " << i << "-" << j + 1 << ". Expected: " << calcRes << " and get: " << myRes << std::endl;
  64. }
  65. }
  66. }
  67. std::cout << calc(arr) << "\n";
  68. std::cout << GetTreesCount(arr) << "\n";
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement