From 984169e6c7317e2e7bc8a666b457375042e25cd7 Mon Sep 17 00:00:00 2001 From: STUTI MISHRA <153292796+stutimi@users.noreply.github.com> Date: Thu, 30 Oct 2025 20:27:00 +0530 Subject: [PATCH] Create 493_Reverse_Pairs --- 493_Reverse_Pairs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 493_Reverse_Pairs diff --git a/493_Reverse_Pairs b/493_Reverse_Pairs new file mode 100644 index 0000000..c62dcee --- /dev/null +++ b/493_Reverse_Pairs @@ -0,0 +1,26 @@ +class Solution { +public: + int reversePairs(vector& a) { return (int)ms(a, 0, (int)a.size() - 1); } + +private: + long long ms(vector& a, int l, int r) { + if (l >= r) return 0; + int m = (l + r) >> 1; + long long cnt = ms(a, l, m) + ms(a, m + 1, r); + + int j = m + 1; + for (int i = l; i <= m; ++i) { + while (j <= r && (long long)a[i] > 2LL * a[j]) ++j; + cnt += j - (m + 1); + } + + vector t; t.reserve(r - l + 1); + int i = l; j = m + 1; + while (i <= m && j <= r) t.push_back(a[i] <= a[j] ? a[i++] : a[j++]); + while (i <= m) t.push_back(a[i++]); + while (j <= r) t.push_back(a[j++]); + for (int k = l; k <= r; ++k) a[k] = t[k - l]; + + return cnt; + } +};