From e9afe6b017910ede5a391233a6f8263afbc9d57b Mon Sep 17 00:00:00 2001 From: Masked-coder11 <153896221+Masked-coder11@users.noreply.github.com> Date: Mon, 1 Apr 2024 00:45:33 +0530 Subject: [PATCH] Create 01.04.2024.cpp --- 01.04.2024.cpp | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 01.04.2024.cpp diff --git a/01.04.2024.cpp b/01.04.2024.cpp new file mode 100644 index 0000000..b85d686 --- /dev/null +++ b/01.04.2024.cpp @@ -0,0 +1,90 @@ +// User function Template for C++ + +/*// A Tree node +struct Node +{ + int data; + struct Node *left, *right; +};*/ + +class Solution { + public: + + long long int merge(vector&arr, long long low, long long mid, long long high){ + long long temp[high-low+1]; + long long int k=0; + long long int i=low; + long long int j=mid+1; + long long int inv=0; + + while(i<=mid && j<=high){ + if(arr[i]<=arr[j]){ + temp[k++]=arr[i++]; + } + else{ + inv+= mid-i +1; + temp[k++]=arr[j++]; + } + } + + while(i<=mid){ + temp[k++]=arr[i++]; + } + + while(j<=high){ + temp[k++]=arr[j++]; + } + + for(int x=low; x<=high; x++){ + arr[x]=temp[x-low]; + } + + return inv; + } + + long long int mergeSort(vector&arr, long long int low, long long int high){ + if(low>=high) return 0; + long long int inv=0; + + long long mid= (low+high)/2; + + inv += mergeSort(arr, low, mid); + inv += mergeSort(arr, mid+1, high); + inv += merge(arr, low, mid, high); + + return inv; + } + + long long int inversionCount(vector&arr, long long N) + { + // Your Code Here + + long long int ans= mergeSort(arr, 0, N-1); + + return ans; + + + } + void inorder(Node*root, vector&arr){ + if(root){ + inorder(root->left, arr); + arr.push_back(root->data); + inorder(root->right, arr); + } + return; + } + + /*You are required to complete below function */ + int pairsViolatingBST(int n, Node *root) { + // your code goes here + // store inorder traversal + vectorarr; + inorder(root, arr); + + // i just want to retun count inversion of arr + long long N=n; + return int(inversionCount(arr, N)); + + + } +};