{"id":1736,"date":"2020-07-01T09:37:51","date_gmt":"2020-07-01T09:37:51","guid":{"rendered":"https:\/\/blog.prepbytes.com\/?p=1736"},"modified":"2022-03-25T12:08:38","modified_gmt":"2022-03-25T12:08:38","slug":"swap-sum","status":"publish","type":"post","link":"https:\/\/prepbytes.com\/blog\/swap-sum\/","title":{"rendered":"Swap Sum"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1647240500985-Article_503.png\" alt=\"\" \/><\/p>\n<h3>Concepts Used<\/h3>\n<blockquote>\n<p>Heap<\/p>\n<\/blockquote>\n<h3>Difficulty Level<\/h3>\n<blockquote>\n<p>Medium<\/p>\n<\/blockquote>\n<h3>Problem Statement :<\/h3>\n<blockquote>\n<p>We are given <code>N<\/code> elements with an integer <code>S<\/code>. We want to find such a sub-array that has the maximum possible sum after applying at-most <code>S<\/code> swaps. The task is to print the sum of that sub-array. <\/p>\n<\/blockquote>\n<p><a href=\"https:\/\/mycode.prepbytes.com\/problems\/heaps\/SWSUM\" title=\"Go to mycode.prepbytes.com\" target=\"_blank\" rel=\"noopener noreferrer\"><u><strong><\/strong><\/u><\/a><\/p>\n<h3>Solution Approach :<\/h3>\n<h4>Introduction :<\/h4>\n<blockquote>\n<p>Idea is to create two heaps, one <strong>min-heap<\/strong> <code>H1<\/code> &amp; one <strong>max-heap<\/strong> <code>H2<\/code>. We will use <strong>min-heap<\/strong> to store the items that are in the subarray which is currently into the consideration and <strong>max-heap<\/strong> to store the items that are not the part of the considered sub-array. Now replace every element in <code>H1<\/code> which is smaller than the largest element in <code>H2<\/code> also untill there are swaps left.<\/p>\n<\/blockquote>\n<h4>Method 1:<\/h4>\n<blockquote>\n<p>Idea is to iterate for every element and divide every subarray<br \/>\ninto two parts : <\/p>\n<ul>\n<li>subarray which is currently being considered.<\/li>\n<li>subarray which is not the part of the considered subarray.<\/li>\n<\/ul>\n<p>We will sort the first sub array in increasing order and the second one is decreasing order. Now while there are swaps left and the smallest element of the first subarray is smaller than the greatest element of the second subarray, we will keep swapping these two values (smallest and greatest).<\/p>\n<\/blockquote>\n<h4>Method 2:<\/h4>\n<blockquote>\n<ul>\n<li>We need to geneate a <strong>min-heap<\/strong> <code>H1<\/code> and <strong>max-heap<\/strong> <code>H2<\/code>.<\/li>\n<li>In a <strong>min-heap<\/strong>, the root always stores the smaller value as compared to its <strong>left<\/strong> &amp; <strong>right<\/strong> subtree, this condition needs to be true for every node. We need to insert each item one by one such that parent is always smaller than the item itself. If parent is greater, then swap the current item with its parent. <\/li>\n<li>In a <strong>max-heap<\/strong>, the root always stores the larger value as compared to its <strong>left<\/strong> &amp; <strong>right<\/strong> subtree, this condition needs to be true for every node. We need to insert each item one by one such that parent is always larger than the item itself. If parent is smaller, then swap the current item with its parent. <\/li>\n<li>While creating <strong>max-heap<\/strong> and <strong>min-heap<\/strong> for each subset, lets say for a subset <code>s<\/code>, we will swap the values <strong>top<\/strong> value of <code>H1<\/code> with the <strong>top<\/strong> value <code>H2<\/code>, untill there are swaps left and the top value of <code>H2<\/code> is greater than <code>H1<\/code> and keep updating the maximum answer after each iteration. F<\/li>\n<\/ul>\n<p><strong>extract()<\/strong>: Removes the minimum\/maximum element from <strong>Min-Heap<\/strong> or <strong>Max-Heap<\/strong>. Time Complexity of this Operation is O(Logn) as this operation needs to maintain the heap property (by calling <strong>heapify()<\/strong>) after removing root.<\/p>\n<p><strong>heapify()<\/strong>: Maintains the heap property for each node. If any node does not follow heap property it swaps the node with the node which is smaller ,or greater (in case of <strong>max-heap<\/strong>), than the node.<\/p>\n<p>Below is the algorithm of above approach.<\/p>\n<\/blockquote>\n<h3>Algorithms :<\/h3>\n<h4><strong>Insert()<\/strong> :<\/h4>\n<blockquote>\n<ol>\n<li>Insert the item at the last index, and increment the size by 1.<\/li>\n<li>Then, check if the inserted item is smaller\/larger than its parent,<\/li>\n<li>If yes, then swap the inserted item with its parent.<\/li>\n<li>If no, then do nothing.<\/li>\n<li>Now, go to step <code>2<\/code> and repeat untill we reach root (first element).<\/li>\n<\/ol>\n<\/blockquote>\n<h4><strong>Extract()<\/strong> :<\/h4>\n<blockquote>\n<ol>\n<li>Store the value of the first node of our heap ( <code>temp = heap[0]<\/code> ).<\/li>\n<li>Replace the root node with the farthest right node (last element).<\/li>\n<li>Decrease the size by <code>1<\/code>. <code>(heap[0] = heap[size-1])<\/code><\/li>\n<li>Perform <strong>heapify<\/strong> starting from the new root. <\/li>\n<li>Return the stored value.(<strong>temp<\/strong>)<\/li>\n<\/ol>\n<h4><strong>Heapify ()<\/strong> :<\/h4>\n<ol>\n<li>if the heap property holds true then you are done.<\/li>\n<li>else if<\/li>\n<li>the replacement node value &lt;= (or =&gt;) its parent nodes value<br \/>\nthen swap them, and repeat step 3.<\/li>\n<li>else<\/li>\n<li>swap the replacement node with the smallest\/largest child   node, and<br \/>\nrepeat step 3.<\/li>\n<\/ol>\n<\/blockquote>\n<h3>Example<\/h3>\n<p><img decoding=\"async\" src=\"https:\/\/prepbytes.com\/blog\/wp-content\/uploads\/2020\/06\/SWSUM.png\" alt=\"\" \/><\/p>\n<h3>Solutions:<\/h3>\n\t\t\t\t\t\t<style>\r\n\t\t\t\t\r\n\t\t\t\t\t#tab_container_1737 {\r\n\toverflow:hidden;\r\n\tdisplay:block;\r\n\twidth:100%;\r\n\tborder:0px solid #ddd;\r\n\tmargin-bottom:30px;\r\n\t}\r\n\r\n#tab_container_1737 .tab-content{\r\n\tpadding:20px;\r\n\tborder: 1px solid #e6e6e6 !important;\r\n\tmargin-top: 0px;\r\n\tbackground-color:#ffffff !important;\r\n\tcolor: #000000 !important;\r\n\tfont-size:16px !important;\r\n\tfont-family: Open Sans !important;\r\n\t\r\n\t\tborder: 1px solid #e6e6e6 !important;\r\n\t}\r\n#tab_container_1737 .wpsm_nav-tabs {\r\n    border-bottom: 0px solid #ddd;\r\n}\r\n#tab_container_1737 .wpsm_nav-tabs > li.active > a, #tab_container_1737 .wpsm_nav-tabs > li.active > a:hover, #tab_container_1737 .wpsm_nav-tabs > li.active > a:focus {\r\n\tcolor: #000000 !important;\r\n\tcursor: default;\r\n\tbackground-color: #ffffff !important;\r\n\tborder: 1px solid #e6e6e6 !important;\r\n}\r\n\r\n#tab_container_1737 .wpsm_nav-tabs > li > a {\r\n    margin-right: 0px !important; \r\n    line-height: 1.42857143 !important;\r\n    border: 1px solid #d5d5d5 !important;\r\n    border-radius: 0px 0px 0 0 !important; \r\n\tbackground-color: #e8e8e8 !important;\r\n\tcolor: #000000 !important;\r\n\tpadding: 15px 18px 15px 18px !important;\r\n\ttext-decoration: none !important;\r\n\tfont-size: 14px !important;\r\n\ttext-align:center !important;\r\n\tfont-family: Open Sans !important;\r\n}\r\n#tab_container_1737 .wpsm_nav-tabs > li > a:focus {\r\noutline: 0px !important;\r\n}\r\n\r\n#tab_container_1737 .wpsm_nav-tabs > li > a:before {\r\n\tdisplay:none !important;\r\n}\r\n#tab_container_1737 .wpsm_nav-tabs > li > a:after {\r\n\tdisplay:none !important ;\r\n}\r\n#tab_container_1737 .wpsm_nav-tabs > li{\r\npadding:0px !important ;\r\nmargin:0px;\r\n}\r\n\r\n#tab_container_1737 .wpsm_nav-tabs > li > a:hover , #tab_container_1737 .wpsm_nav-tabs > li > a:focus {\r\n    color: #000000 !important;\r\n    background-color: #e8e8e8 !important;\r\n\tborder: 1px solid #d5d5d5 !important;\r\n\t\r\n}\r\n#tab_container_1737 .wpsm_nav-tabs > li > a .fa{\r\n\r\nmargin-right:5px !important;\r\n\r\nmargin-left:5px !important;\r\n\r\n\r\n}\r\n\r\n\t\t#tab_container_1737 .wpsm_nav-tabs a{\r\n\t\t\tbackground-image: none;\r\n\t\t\tbackground-position: 0 0;\r\n\t\t\tbackground-repeat: repeat-x;\r\n\t\t}\r\n\t\t\t\r\n\r\n\r\n#tab_container_1737 .wpsm_nav-tabs > li {\r\n    float: left;\r\n    margin-bottom: -1px !important;\r\n\tmargin-right:0px !important; \r\n}\r\n\r\n\r\n#tab_container_1737 .tab-content{\r\noverflow:hidden !important;\r\n}\r\n\r\n\r\n@media (min-width: 769px) {\r\n\r\n\t#tab_container_1737 .wpsm_nav-tabs > li{\r\n\t\tfloat:left !important ;\r\n\t\t\t\tmargin-right:-1px !important;\r\n\t\t\t\t\t}\r\n\t#tab_container_1737 .wpsm_nav-tabs{\r\n\t\tfloat:none !important;\r\n\t\tmargin:0px !important;\r\n\t}\r\n\r\n\t#tab_container_1737 .wpsm_nav-tabs > li {\r\n\t\t\t\t\r\n\t}\r\n\t#tab_container_1737 .wpsm_nav{\r\n\t\t\t}\r\n\r\n}\r\n\r\n\r\n\r\n@media (max-width: 768px) {\r\n\t#tab_container_1737 .wpsm_nav-tabs > li {\r\n\t\t\t\t\r\n\t}\r\n\t#tab_container_1737 .wpsm_nav{\r\n\t\t\t}\r\n}\r\n\r\n\r\n\t.wpsm_nav-tabs li:before{\r\n\t\tdisplay:none !important;\r\n\t}\r\n\r\n\t@media (max-width: 768px) {\r\n\t\t\t\t\r\n\t\t\t\t.wpsm_nav-tabs{\r\n\t\t\tmargin-left:0px !important;\r\n\t\t\tmargin-right:0px !important; \r\n\t\t\t\r\n\t\t}\r\n\t\t\t\t#tab_container_1737 .wpsm_nav-tabs > li{\r\n\t\t\tfloat:none !important;\r\n\t\t}\r\n\t\t\t\r\n\t}\t\t\t\t<\/style>\r\n\t\t\t\t<div id=\"tab_container_1737\" >\r\n\t \r\n\t\t\t\t\t<ul class=\"wpsm_nav wpsm_nav-tabs\" role=\"tablist\" id=\"myTab_1737\">\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<li role=\"presentation\"  class=\"active\"  onclick=\"do_resize()\">\r\n\t\t\t\t\t\t\t\t<a href=\"#tabs_desc_1737_1\" aria-controls=\"tabs_desc_1737_1\" role=\"tab\" data-toggle=\"tab\">\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"fa fa-code\"><\/i> \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t<span>C++<\/span>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t<\/a>\r\n\t\t\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<li role=\"presentation\"  onclick=\"do_resize()\">\r\n\t\t\t\t\t\t\t\t<a href=\"#tabs_desc_1737_2\" aria-controls=\"tabs_desc_1737_2\" role=\"tab\" data-toggle=\"tab\">\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"fa fa-code\"><\/i> \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t<span>Java<\/span>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t<\/a>\r\n\t\t\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\t\t\t\t <\/ul>\r\n\r\n\t\t\t\t\t  <!-- Tab panes -->\r\n\t\t\t\t\t  <div class=\"tab-content\" id=\"tab-content_1737\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t <div role=\"tabpanel\" class=\"tab-pane  in active \" id=\"tabs_desc_1737_1\">\r\n\t\t\t\t\t\t\t\t<!-- wp:enlighter\/codeblock {\"language\":\"cpp\"} -->\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\r\n#include &lt;bits\/stdc++.h&gt;\r\n using namespace std;\r\n\r\n  class heap {\r\n    public:\r\n          int *Heap;\r\n          int N;\r\n          int maxsize;\r\n          bool reverse;\r\n\r\n          heap(int maxsize) {\r\n             this-&gt;maxsize = maxsize;\r\n             this-&gt;Heap = (int *)malloc(sizeof(int)*maxsize+1);\r\n             this-&gt;N = 0;\r\n         }\r\n\r\n          heap(int maxsize, bool reverse) {\r\n             this-&gt;maxsize= maxsize;\r\n             this-&gt;Heap = (int *)malloc(sizeof(int)*maxsize+1);\r\n             this-&gt;reverse = reverse;\r\n         }\r\n\r\n\r\n          bool comp(int a, int b) {\r\n             if (reverse) {\r\n                 return Heap[a] &gt; Heap[b];\r\n             } else {\r\n                 return Heap[a] &lt; Heap[b];\r\n             }\r\n         }\r\n\r\n         void insert(int val) {\r\n             Heap[++N] = val;\r\n             heapify_up(N);\r\n         }\r\n\r\n          int size() {\r\n             return N;\r\n         }\r\n\r\n          void heapify_up(int n) {\r\n             while (n &gt; 1 &amp;&amp; comp(n, n\/2)) {\r\n                 swap(n, n\/2);\r\n                 n = n\/2;\r\n             }\r\n         }\r\n         void heapify_down(int n) {\r\n             while (2 * n &lt;= N) {\r\n                 int j = 2 * n;\r\n                 if (j &lt; N &amp;&amp; !comp(j, j+1)) j++;\r\n                 if (comp(n, j)) break;\r\n                 swap(n, j);\r\n                 n = j;\r\n             }\r\n         }\r\n\r\n\r\n\r\n         bool isEmpty() {\r\n             return N == 0;\r\n         }\r\n\r\n         int top() {\r\n             return Heap[1];\r\n         }\r\n\r\n         void pop() {\r\n             Heap[1] = Heap[N--];\r\n             heapify_down(1);\r\n         }\r\n\r\n         void swap(int a, int b) {\r\n             int temp = Heap[a];\r\n             Heap[a] = Heap[b];\r\n             Heap[b] = temp;\r\n         }\r\n\r\n     };\r\n int main()\r\n {\r\n         int n ;\r\n         int s;\r\n         cin&gt;&gt;n&gt;&gt;s;\r\n         int a[n];\r\n         for (int i = 0; i &lt; n; i++) {\r\n             cin&gt;&gt;a[i] ;\r\n         }\r\n         int ans = INT_MIN;\r\n         for (int i = 0; i &lt; n; i++) {\r\n             for (int j = i; j &lt; n; j++) {\r\n                 int curans = 0;\r\n                 heap *minheap = new heap(n);\r\n                 heap *maxheap = new heap(n, true);\r\n\r\n                 for (int k = 0; k &lt; n; k++) {\r\n                     if (k &gt;= i &amp;&amp; k &lt;= j) {\r\n                         curans += a[k];\r\n                         minheap-&gt;insert(a[k]);\r\n                     } else {\r\n                         maxheap-&gt;insert(a[k]);\r\n                     }\r\n                 }\r\n\r\n                 ans = max(ans, curans);\r\n\r\n                 for (int k = 1; k &lt;= s; k++) {\r\n                     if (maxheap-&gt;isEmpty() || minheap-&gt;isEmpty() || minheap-&gt;top() &gt;= maxheap-&gt;top()) {\r\n                         break;\r\n                     }\r\n\r\n                     curans -= minheap-&gt;top();\r\n                     minheap-&gt;pop();\r\n                     curans += maxheap-&gt;top();\r\n                     maxheap-&gt;pop();\r\n\r\n                     ans = max(ans, curans);\r\n                 }\r\n             }\r\n         }\r\n\r\n         cout&lt;&lt;ans&lt;&lt;endl;\r\n } \r\n<\/pre>\r\n<!-- \/wp:enlighter\/codeblock -->\t\t\t\t\t\t <\/div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t <div role=\"tabpanel\" class=\"tab-pane \" id=\"tabs_desc_1737_2\">\r\n\t\t\t\t\t\t\t\t<!-- wp:enlighter\/codeblock {\"language\":\"java\"} -->\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\r\nimport java.util.Scanner;\r\n\r\npublic class Main {\r\n    public static class Heap {\r\n        private int[] Heap;\r\n        private int N;\r\n        private int maxsize;\r\n        private boolean reverse;\r\n\r\n        public Heap(int maxsize) {\r\n            this.maxsize = maxsize;\r\n            this.Heap = new int[maxsize + 1];\r\n            this.N = 0;\r\n        }\r\n\r\n        public Heap(int maxsize, boolean reverse) {\r\n            this(maxsize);\r\n            this.reverse = reverse;\r\n        }\r\n\r\n\r\n        private boolean comp(int a, int b) {\r\n            if (reverse) {\r\n                return Heap[a] &gt; Heap[b];\r\n            } else {\r\n                return Heap[a] &lt; Heap[b];\r\n            }\r\n        }\r\n\r\n        public void insert(int val) {\r\n            Heap[++N] = val;\r\n            heapify_up(N);\r\n        }\r\n\r\n        public int size() {\r\n            return N;\r\n        }\r\n\r\n        private void heapify_up(int n) {\r\n            while (n &gt; 1 &amp;&amp; comp(n, n\/2)) {\r\n                swap(n, n\/2);\r\n                n = n\/2;\r\n            }\r\n        }\r\n        private void heapify_down(int n) {\r\n            while (2 * n &lt;= N) {\r\n                int j = 2 * n;\r\n                if (j &lt; N &amp;&amp; !comp(j, j+1)) j++;\r\n                if (comp(n, j)) break;\r\n                swap(n, j);\r\n                n = j;\r\n            }\r\n        }\r\n\r\n\r\n\r\n        public boolean isEmpty() {\r\n            return N == 0;\r\n        }\r\n\r\n        public int top() {\r\n            return Heap[1];\r\n        }\r\n\r\n        public void pop() {\r\n            Heap[1] = Heap[N--];\r\n            heapify_down(1);\r\n        }\r\n\r\n        private void swap(int a, int b) {\r\n            int temp = Heap[a];\r\n            Heap[a] = Heap[b];\r\n            Heap[b] = temp;\r\n        }\r\n\r\n    }\r\n    public static void main(String[] args) {\r\n        Scanner scanner = new Scanner(System.in);\r\n        int n = scanner.nextInt();\r\n        int s = scanner.nextInt();\r\n        int[] a = new int[n];\r\n        for (int i = 0; i &lt; n; i++) {\r\n            a[i] = scanner.nextInt();\r\n        }\r\n        int ans = Integer.MIN_VALUE;\r\n        for (int i = 0; i &lt; n; i++) {\r\n            for (int j = i; j &lt; n; j++) {\r\n                int curans = 0;\r\n                Heap minheap = new Heap(n);\r\n                Heap maxheap = new Heap(n, true);\r\n\r\n                for (int k = 0; k &lt; n; k++) {\r\n                    if (k &gt;= i &amp;&amp; k &lt;= j) {\r\n                        curans += a[k];\r\n                        minheap.insert(a[k]);\r\n                    } else {\r\n                        maxheap.insert(a[k]);\r\n                    }\r\n                }\r\n\r\n                ans = Math.max(ans, curans);\r\n\r\n                for (int k = 1; k &lt;= s; k++) {\r\n                    if (maxheap.isEmpty() || minheap.isEmpty() || minheap.top() &gt;= maxheap.top()) {\r\n                        break;\r\n                    }\r\n\r\n                    curans -= minheap.top();\r\n                    minheap.pop();\r\n                    curans += maxheap.top();\r\n                    maxheap.pop();\r\n\r\n                    ans = Math.max(ans, curans);\r\n                }\r\n            }\r\n        }\r\n\r\n        System.out.println(ans);\r\n    }\r\n\r\n}\r\n<\/pre>\r\n<!-- \/wp:enlighter\/codeblock -->\r\n\t\t\t\t\t\t <\/div>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t <\/div>\r\n\t\t\t\t\t \r\n\t\t\t\t <\/div>\r\n <script>\r\n\t\tjQuery(function () {\r\n\t\t\tjQuery('#myTab_1737 a:first').tab('show')\r\n\t\t});\r\n\t\t\r\n\t\t\t\tjQuery(function(){\r\n\t\t\tvar b=\"fadeIn\";\r\n\t\t\tvar c;\r\n\t\t\tvar a;\r\n\t\t\td(jQuery(\"#myTab_1737 a\"),jQuery(\"#tab-content_1737\"));function d(e,f,g){\r\n\t\t\t\te.click(function(i){\r\n\t\t\t\t\ti.preventDefault();\r\n\t\t\t\t\tjQuery(this).tab(\"show\");\r\n\t\t\t\t\tvar h=jQuery(this).data(\"easein\");\r\n\t\t\t\t\tif(c){c.removeClass(a);}\r\n\t\t\t\t\tif(h){f.find(\"div.active\").addClass(\"animated \"+h);a=h;}\r\n\t\t\t\t\telse{if(g){f.find(\"div.active\").addClass(\"animated \"+g);a=g;}else{f.find(\"div.active\").addClass(\"animated \"+b);a=b;}}c=f.find(\"div.active\");\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\r\n\t\tfunction do_resize(){\r\n\r\n\t\t\tvar width=jQuery( '.tab-content .tab-pane iframe' ).width();\r\n\t\t\tvar height=jQuery( '.tab-content .tab-pane iframe' ).height();\r\n\r\n\t\t\tvar toggleSize = true;\r\n\t\t\tjQuery('iframe').animate({\r\n\t\t\t    width: toggleSize ? width : 640,\r\n\t\t\t    height: toggleSize ? height : 360\r\n\t\t\t  }, 250);\r\n\r\n\t\t\t  toggleSize = !toggleSize;\r\n\t\t}\r\n\r\n\r\n\t<\/script>\r\n\t\t\t\t\r\n\t\t\t\n<p>[forminator_quiz id=&quot;1739&quot;]<\/p>\n<p>This article tried to discuss Heap. Hope this blog helps you understand and solve the problem. To practice more problems on Heap you can check out <a href=\"#\"><\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Concepts Used Heap Difficulty Level Medium Problem Statement : We are given N elements with an integer S. We want to find such a sub-array that has the maximum possible sum after applying at-most S swaps. The task is to print the sum of that sub-array. Solution Approach : Introduction : Idea is to create [&hellip;]<\/p>\n","protected":false},"author":52,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[131],"tags":[],"class_list":["post-1736","post","type-post","status-publish","format-standard","hentry","category-heap"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Heap | Swap Sum | Prepbytes<\/title>\n<meta name=\"description\" content=\"We Are Given N Elements With an Integer S. We Want to Find Such a Sub-array That Has the Maximum Possible Sum After Applying At-most S Swaps. Print the Sum of That Sub-array.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/prepbytes.com\/blog\/swap-sum\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Heap | Swap Sum | Prepbytes\" \/>\n<meta property=\"og:description\" content=\"We Are Given N Elements With an Integer S. We Want to Find Such a Sub-array That Has the Maximum Possible Sum After Applying At-most S Swaps. Print the Sum of That Sub-array.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/prepbytes.com\/blog\/swap-sum\/\" \/>\n<meta property=\"og:site_name\" content=\"PrepBytes Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prepbytes0211\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-07-01T09:37:51+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-03-25T12:08:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1647240500985-Article_503.png\" \/>\n<meta name=\"author\" content=\"Prepbytes\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Prepbytes\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/prepbytes.com\/blog\/swap-sum\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/swap-sum\/\"},\"author\":{\"name\":\"Prepbytes\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e\"},\"headline\":\"Swap Sum\",\"datePublished\":\"2020-07-01T09:37:51+00:00\",\"dateModified\":\"2022-03-25T12:08:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/swap-sum\/\"},\"wordCount\":612,\"commentCount\":0,\"publisher\":{\"@id\":\"http:\/\/43.205.93.38\/#organization\"},\"image\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/swap-sum\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1647240500985-Article_503.png\",\"articleSection\":[\"Heap\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/prepbytes.com\/blog\/swap-sum\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/prepbytes.com\/blog\/swap-sum\/\",\"url\":\"https:\/\/prepbytes.com\/blog\/swap-sum\/\",\"name\":\"Heap | Swap Sum | Prepbytes\",\"isPartOf\":{\"@id\":\"http:\/\/43.205.93.38\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/swap-sum\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/swap-sum\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1647240500985-Article_503.png\",\"datePublished\":\"2020-07-01T09:37:51+00:00\",\"dateModified\":\"2022-03-25T12:08:38+00:00\",\"description\":\"We Are Given N Elements With an Integer S. We Want to Find Such a Sub-array That Has the Maximum Possible Sum After Applying At-most S Swaps. Print the Sum of That Sub-array.\",\"breadcrumb\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/swap-sum\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/prepbytes.com\/blog\/swap-sum\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/prepbytes.com\/blog\/swap-sum\/#primaryimage\",\"url\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1647240500985-Article_503.png\",\"contentUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1647240500985-Article_503.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/prepbytes.com\/blog\/swap-sum\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\/\/43.205.93.38\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Heap\",\"item\":\"https:\/\/prepbytes.com\/blog\/category\/heap\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Swap Sum\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/43.205.93.38\/#website\",\"url\":\"http:\/\/43.205.93.38\/\",\"name\":\"PrepBytes Blog\",\"description\":\"ONE-STOP RESOURCE FOR EVERYTHING RELATED TO CODING\",\"publisher\":{\"@id\":\"http:\/\/43.205.93.38\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/43.205.93.38\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"http:\/\/43.205.93.38\/#organization\",\"name\":\"Prepbytes\",\"url\":\"http:\/\/43.205.93.38\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/blog.prepbytes.com\/wp-content\/uploads\/2025\/07\/uzxxllgloialmn9mhwfe.webp\",\"contentUrl\":\"https:\/\/blog.prepbytes.com\/wp-content\/uploads\/2025\/07\/uzxxllgloialmn9mhwfe.webp\",\"width\":160,\"height\":160,\"caption\":\"Prepbytes\"},\"image\":{\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/prepbytes0211\/\",\"https:\/\/www.instagram.com\/prepbytes\/\",\"https:\/\/www.linkedin.com\/company\/prepbytes\/\",\"https:\/\/www.youtube.com\/channel\/UC0xGnHDrjUM1pDEK2Ka5imA\"]},{\"@type\":\"Person\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e\",\"name\":\"Prepbytes\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/232042cd1a1ea0e982c96d2a2ec93fb70a8e864e00784491231e7bfe5a9e06b5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/232042cd1a1ea0e982c96d2a2ec93fb70a8e864e00784491231e7bfe5a9e06b5?s=96&d=mm&r=g\",\"caption\":\"Prepbytes\"},\"url\":\"https:\/\/prepbytes.com\/blog\/author\/gourav-jaincollegedekho-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Heap | Swap Sum | Prepbytes","description":"We Are Given N Elements With an Integer S. We Want to Find Such a Sub-array That Has the Maximum Possible Sum After Applying At-most S Swaps. Print the Sum of That Sub-array.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/prepbytes.com\/blog\/swap-sum\/","og_locale":"en_US","og_type":"article","og_title":"Heap | Swap Sum | Prepbytes","og_description":"We Are Given N Elements With an Integer S. We Want to Find Such a Sub-array That Has the Maximum Possible Sum After Applying At-most S Swaps. Print the Sum of That Sub-array.","og_url":"https:\/\/prepbytes.com\/blog\/swap-sum\/","og_site_name":"PrepBytes Blog","article_publisher":"https:\/\/www.facebook.com\/prepbytes0211\/","article_published_time":"2020-07-01T09:37:51+00:00","article_modified_time":"2022-03-25T12:08:38+00:00","og_image":[{"url":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1647240500985-Article_503.png","type":"","width":"","height":""}],"author":"Prepbytes","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Prepbytes","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/prepbytes.com\/blog\/swap-sum\/#article","isPartOf":{"@id":"https:\/\/prepbytes.com\/blog\/swap-sum\/"},"author":{"name":"Prepbytes","@id":"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e"},"headline":"Swap Sum","datePublished":"2020-07-01T09:37:51+00:00","dateModified":"2022-03-25T12:08:38+00:00","mainEntityOfPage":{"@id":"https:\/\/prepbytes.com\/blog\/swap-sum\/"},"wordCount":612,"commentCount":0,"publisher":{"@id":"http:\/\/43.205.93.38\/#organization"},"image":{"@id":"https:\/\/prepbytes.com\/blog\/swap-sum\/#primaryimage"},"thumbnailUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1647240500985-Article_503.png","articleSection":["Heap"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/prepbytes.com\/blog\/swap-sum\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/prepbytes.com\/blog\/swap-sum\/","url":"https:\/\/prepbytes.com\/blog\/swap-sum\/","name":"Heap | Swap Sum | Prepbytes","isPartOf":{"@id":"http:\/\/43.205.93.38\/#website"},"primaryImageOfPage":{"@id":"https:\/\/prepbytes.com\/blog\/swap-sum\/#primaryimage"},"image":{"@id":"https:\/\/prepbytes.com\/blog\/swap-sum\/#primaryimage"},"thumbnailUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1647240500985-Article_503.png","datePublished":"2020-07-01T09:37:51+00:00","dateModified":"2022-03-25T12:08:38+00:00","description":"We Are Given N Elements With an Integer S. We Want to Find Such a Sub-array That Has the Maximum Possible Sum After Applying At-most S Swaps. Print the Sum of That Sub-array.","breadcrumb":{"@id":"https:\/\/prepbytes.com\/blog\/swap-sum\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/prepbytes.com\/blog\/swap-sum\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/prepbytes.com\/blog\/swap-sum\/#primaryimage","url":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1647240500985-Article_503.png","contentUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1647240500985-Article_503.png"},{"@type":"BreadcrumbList","@id":"https:\/\/prepbytes.com\/blog\/swap-sum\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/43.205.93.38\/"},{"@type":"ListItem","position":2,"name":"Heap","item":"https:\/\/prepbytes.com\/blog\/category\/heap\/"},{"@type":"ListItem","position":3,"name":"Swap Sum"}]},{"@type":"WebSite","@id":"http:\/\/43.205.93.38\/#website","url":"http:\/\/43.205.93.38\/","name":"PrepBytes Blog","description":"ONE-STOP RESOURCE FOR EVERYTHING RELATED TO CODING","publisher":{"@id":"http:\/\/43.205.93.38\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/43.205.93.38\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"http:\/\/43.205.93.38\/#organization","name":"Prepbytes","url":"http:\/\/43.205.93.38\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/43.205.93.38\/#\/schema\/logo\/image\/","url":"https:\/\/blog.prepbytes.com\/wp-content\/uploads\/2025\/07\/uzxxllgloialmn9mhwfe.webp","contentUrl":"https:\/\/blog.prepbytes.com\/wp-content\/uploads\/2025\/07\/uzxxllgloialmn9mhwfe.webp","width":160,"height":160,"caption":"Prepbytes"},"image":{"@id":"http:\/\/43.205.93.38\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/prepbytes0211\/","https:\/\/www.instagram.com\/prepbytes\/","https:\/\/www.linkedin.com\/company\/prepbytes\/","https:\/\/www.youtube.com\/channel\/UC0xGnHDrjUM1pDEK2Ka5imA"]},{"@type":"Person","@id":"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e","name":"Prepbytes","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/43.205.93.38\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/232042cd1a1ea0e982c96d2a2ec93fb70a8e864e00784491231e7bfe5a9e06b5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/232042cd1a1ea0e982c96d2a2ec93fb70a8e864e00784491231e7bfe5a9e06b5?s=96&d=mm&r=g","caption":"Prepbytes"},"url":"https:\/\/prepbytes.com\/blog\/author\/gourav-jaincollegedekho-com\/"}]}},"_links":{"self":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/1736","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/users\/52"}],"replies":[{"embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/comments?post=1736"}],"version-history":[{"count":7,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/1736\/revisions"}],"predecessor-version":[{"id":8242,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/1736\/revisions\/8242"}],"wp:attachment":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/media?parent=1736"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/categories?post=1736"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/tags?post=1736"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}