Advertisement
eyalgolan

Untitled

Nov 22nd, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.66 KB | None | 0 0
  1. // you can use includes, for example:
  2. // #include <algorithm>
  3.  
  4. // you can write to stdout for debugging purposes, e.g.
  5. // cout << "this is a debug message" << endl;
  6. #include <vector>
  7. #include <algorithm>
  8. using namespace std;
  9.  
  10. void mergeSort(vector<int>, int, int);
  11. void merge(vector<int>, int, int, int);
  12. int check(vector<int>);
  13.  
  14. int solution(vector<int> &A) {
  15. // write your code in C++14 (g++ 6.2.0)
  16. unsigned long size = A.size();
  17. mergeSort(A,0, size);
  18. int smallest = check(A);
  19. return smallest;
  20. }
  21.  
  22. int check(vector<int> A) {
  23. vector<int>::iterator it;
  24. auto start = A.begin();
  25. auto end = A.end();
  26. for(int i=1 ; i<=100000 ; i++) {
  27. it = find(start,end, i);
  28. if(it==end) {
  29. return i;
  30. }
  31. }
  32. return 100001;
  33. }
  34. void mergeSort(vector<int> A, unsigned long left, unsigned long right) {
  35. if(left < right) {
  36. unsigned long mid = left + (right - left)/2;
  37. mergeSort(A, left, mid);
  38. mergeSort(A, mid+1, right);
  39.  
  40. merge(A, left, mid, right);
  41. }
  42. }
  43. void merge(vector<int> A, unsigned long left, unsigned long mid, unsigned long right) {
  44. unsigned long i, j, k;
  45. unsigned long n1 = mid - left + 1;
  46. unsigned long n2 = right - mid;
  47.  
  48. vector<int> L(n1);
  49. vector<int> R(n2);
  50.  
  51. for(i = 0 ; i < n1 ; i++) {
  52. L[i] = A[left+1];
  53. }
  54. for(j = 0 ; j < n2 ; j++) {
  55. R[j] = A[mid + 1 + j];
  56. }
  57.  
  58. i=0;
  59. j=0;
  60. k=left;
  61.  
  62. while (i<n1 && j<n2) {
  63. if(L[i]<=R[j]) {
  64. A[k]=R[j];
  65. i++;
  66. }
  67. else {
  68. A[k] = R[j];
  69. j++;
  70. }
  71. k++;
  72. }
  73.  
  74. while(i < n1) {
  75. A[k] = L[i];
  76. i++;
  77. k++;
  78. }
  79.  
  80. while(j < n2) {
  81. A[k] = R[j];
  82. j++;
  83. k++;
  84. }
  85.  
  86.  
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement