Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- #define endl "\n"
- using namespace std;
- void merge_them(vector<int> &ara, int L, int mid, int R) {
- vector<int> partial_sort;
- int L1 = L, R1 = mid, L2 = mid + 1, R2 = R;
- while(L1<=R1 && L2<=R2) {
- if(ara[L1] <= ara[L2]) {
- partial_sort.push_back(ara[L1]);
- L1++;
- } else {
- partial_sort.push_back(ara[L2]);
- L2++;
- }
- }
- while(L1<=R1) {
- partial_sort.push_back(ara[L1]);
- L1++;
- }
- while(L2<=R2) {
- partial_sort.push_back(ara[L2]);
- L2++;
- }
- for(int i = 0, j = L; i<partial_sort.size(); i++, j++) {
- ara[j] = partial_sort[i];
- }
- }
- void merge_sort(vector<int>&arr, int L, int R) {
- if (L >= R) return;
- int M = (L + R) / 2;
- /// arr -> [6, 2, 5, 11, 1, -1, 7, 3]
- merge_sort(arr, L, M);
- /// arr[L,...,M] is sorted. arr -> [2, 5, 6, 11, 1, -1, 7, 3]
- merge_sort(arr, M + 1, R);
- /// arr[M + 1,...,R] is sorted. arr -> [2, 5, 6, 11, -1, 1, 3, 7]
- merge_them(arr, L, M, R);
- /// arr[L,...,R] -> [-1, 1, 2, 3, 5, 6, 7, 11]
- }
- void merge_sort(vector<int>&arr) {
- merge_sort(arr, 0, arr.size() - 1);
- }
- int main()
- {
- int n;
- cin >> n;
- vector<int> arr(n);
- for (int i = 0; i < n; i++)
- {
- cin >> arr[i];
- }
- merge_sort(arr);
- if (is_sorted(arr.begin(), arr.end())) {
- cout << "SUCCESS\n";
- }
- else {
- cout << "FAILURE\n";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement