{"id":1674,"date":"2020-07-01T09:29:58","date_gmt":"2020-07-01T09:29:58","guid":{"rendered":"https:\/\/blog.prepbytes.com\/?p=1674"},"modified":"2022-03-29T09:59:10","modified_gmt":"2022-03-29T09:59:10","slug":"maximum-books","status":"publish","type":"post","link":"https:\/\/prepbytes.com\/blog\/maximum-books\/","title":{"rendered":"Maximum Books"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645527877949-Article_390.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> book costs, and <code>k<\/code> amount of money. We need to find the maximum number of books we can buy with the amount <code>k<\/code>.<\/p>\n<\/blockquote>\n<p><a href=\"https:\/\/mycode.prepbytes.com\/problems\/heaps\/MXBOOK\" 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>In order to buy maximum number of books we have to buy the books with lesser price first. We will sum up the costs of the books we have bought.<br \/>\nIf the sum is greater than <code>k<\/code>, print the number of books we have bought.<\/p>\n<\/blockquote>\n<h4>Method 1:<\/h4>\n<ul>\n<li>\n<p>We need to buy maximum number of books which is only possible if we buy books with least prices. If we have <code>k<\/code> amount of money we can sort the prices in increasing order, now we starting buying books and subtracting the prices of the books we bought from <code>k<\/code> and also keep a counter variable to store the number of books we have bought. <\/p>\n<\/li>\n<li>\n<p>Now when <code>price-k&lt;=0<\/code>, we stop and print the books count.<\/p>\n<\/li>\n<li>\n<p>We need to geneate a min heap of size <code>N<\/code> to get the least price every time we buy a book.<\/p>\n<\/li>\n<li>\n<p>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. <\/p>\n<\/li>\n<li>\n<p><strong>Insert<\/strong> the cost of the books in the heap. Now <strong>extract<\/strong> the costs, add them to <code>S<\/code> &amp; also keep track of the number of books we are buying.<\/p>\n<\/li>\n<li>\n<p>Once <code>S<\/code> is greater than <code>k<\/code> print the number of books.<\/p>\n<\/li>\n<\/ul>\n<p><strong>extract()<\/strong>: Removes the minimum element from <strong>Min-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<h3>Algorithms :<\/h3>\n<h4>Insert() :<\/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 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>Extract() :<\/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<\/blockquote>\n<h4>Heapify () :<\/h4>\n<blockquote>\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;= 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 child node, and<br \/>\nrepeat step 3.<\/li>\n<\/ol>\n<\/blockquote>\n<h4>Example:<\/h4>\n<p><img decoding=\"async\" src=\"https:\/\/prepbytes.com\/blog\/wp-content\/uploads\/2020\/06\/MXBOOK.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_1680 {\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_1680 .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_1680 .wpsm_nav-tabs {\r\n    border-bottom: 0px solid #ddd;\r\n}\r\n#tab_container_1680 .wpsm_nav-tabs > li.active > a, #tab_container_1680 .wpsm_nav-tabs > li.active > a:hover, #tab_container_1680 .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_1680 .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_1680 .wpsm_nav-tabs > li > a:focus {\r\noutline: 0px !important;\r\n}\r\n\r\n#tab_container_1680 .wpsm_nav-tabs > li > a:before {\r\n\tdisplay:none !important;\r\n}\r\n#tab_container_1680 .wpsm_nav-tabs > li > a:after {\r\n\tdisplay:none !important ;\r\n}\r\n#tab_container_1680 .wpsm_nav-tabs > li{\r\npadding:0px !important ;\r\nmargin:0px;\r\n}\r\n\r\n#tab_container_1680 .wpsm_nav-tabs > li > a:hover , #tab_container_1680 .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_1680 .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_1680 .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_1680 .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_1680 .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_1680 .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_1680 .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_1680 .wpsm_nav-tabs > li {\r\n\t\t\t\t\r\n\t}\r\n\t#tab_container_1680 .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_1680 .wpsm_nav-tabs > li {\r\n\t\t\t\t\r\n\t}\r\n\t#tab_container_1680 .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_1680 .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_1680\" >\r\n\t \r\n\t\t\t\t\t<ul class=\"wpsm_nav wpsm_nav-tabs\" role=\"tablist\" id=\"myTab_1680\">\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_1680_1\" aria-controls=\"tabs_desc_1680_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_1680_2\" aria-controls=\"tabs_desc_1680_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>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_1680_3\" aria-controls=\"tabs_desc_1680_3\" 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_1680\">\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_1680_1\">\r\n\t\t\t\t\t\t\t\t<!-- wp:enlighter\/codeblock {\"language\":\"c\"} -->\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\r\n#include &lt;stdio.h&gt;\r\nint parent(int i)\r\n{\r\nreturn (i-1)\/2;\r\n}\r\nint left(int i)\r\n{\r\nreturn (i*2)+1;\r\n\r\n}\r\nint right(int i)\r\n{\r\nreturn (i*2)+2;\r\n}\r\nvoid swap(int *a,int *b)\r\n{\r\nint temp = *a;\r\n*a = *b;\r\n*b = temp;\r\n}\r\nvoid insert(int heap[],int *size, int val)\r\n{\r\nheap[*size] = val;\r\nint i = *size;\r\n(*size)++;\r\nwhile(i!=0 &amp;&amp; heap[parent(i)]&gt;heap[i])\r\n{\r\nswap(&amp;heap[parent(i)],&amp;heap[i]);\r\ni = parent(i);\r\n}\r\n\r\n}\r\nvoid heapify(int heap[],int i,int size)\r\n{\r\nint l = left(i);\r\nint r = right(i);\r\nint s = i;\r\nif(l&lt;size &amp;&amp; heap[l]&lt;heap[i])\r\ns = l;\r\nif(r&lt;size &amp;&amp; heap[r]&lt;heap[s])\r\ns = r;\r\nif(s!=i)\r\n{\r\nswap(&amp;heap[i],&amp;heap[s]);\r\nheapify(heap,s,size);\r\n}\r\n\r\n}\r\nint extract(int heap[],int *size)\r\n{\r\nint root = heap[0];\r\nheap[0] = heap[(*size)-1];\r\n(*size)--;\r\nheapify(heap,0,*size);\r\nreturn root;\r\n}\r\nint main()\r\n{\r\nint t;\r\nscanf(&quot;%d&quot;,&amp;t);\r\nwhile(t--)\r\n{\r\nint n,k;\r\nscanf(&quot;%d %d&quot;, &amp;n,&amp;k);\r\nint *heap = (int *)malloc(sizeof(int)*n);\r\nint size = 0;\r\nfor(int i=0;i&lt;n;i++)\r\n     {\r\n     int t;\r\n     scanf(&quot;%d&quot;,&amp;t);\r\n     insert(heap,&amp;size,t);\r\n     }\r\n     int count=0,sum=0;\r\n\r\nwhile(k&gt;=0 &amp;&amp; size)\r\n{\r\n     k -= extract(heap,&amp;size);\r\n     count++;\r\n}\r\nprintf(&quot;%d&#92;n&quot;,count-1);\r\n\r\n}\r\nreturn 0;\r\n}\r\n<\/pre>\r\n<!-- \/wp:enlighter\/codeblock -->\r\n\r\n\r\n\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_1680_2\">\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\nusing namespace std;\r\nint parent(int i)\r\n{\r\n     return (i-1)\/2;\r\n}\r\nint left(int i)\r\n{\r\n     return (i*2)+1;\r\n}\r\nint right(int i)\r\n{\r\n     return (i*2)+2;\r\n}\r\nvoid swap(int *a,int *b)\r\n{\r\n     int temp = *a;\r\n     *a = *b;\r\n     *b = temp;\r\n}\r\nvoid insert(int heap[],int *size, int val)\r\n{\r\n     heap[*size]= val;\r\n     int i = *size;\r\n     (*size)++;\r\n     while(i!=0 &amp;&amp; heap[parent(i)]&gt;heap[i])\r\n     {\r\n     swap(&amp;heap[parent(i)],&amp;heap[i]);\r\n     i = parent(i);\r\n     }\r\n}\r\nvoid heapify(int heap[],int i,int size)\r\n{\r\n     int l = left(i);\r\n     int r = right(i);\r\n     int s = i;\r\n     if(l&lt;size &amp;&amp; heap[l]&lt;heap[i])\r\n        s = l;\r\n     if(r&lt;size &amp;&amp; heap[r]&lt;heap[s])\r\n        s = r;\r\n     if(s!=i)\r\n     {\r\n     swap(&amp;heap[i],&amp;heap[s]);\r\n     heapify(heap,s,size);\r\n     }\r\n}\r\nint extract(int heap[],int *size)\r\n{\r\n     int root = heap[0];\r\n     heap[0] = heap[*size-1];\r\n     (*size)--;\r\n     heapify(heap,0,*size);\r\n     return root;\r\n}\r\n int main()\r\n {\r\n   int t;\r\n   cin&gt;&gt;t;\r\n   while(t--)\r\n   {\r\n   int n,k;\r\n   cin&gt;&gt;n&gt;&gt;k;\r\n   int *heap = (int *)malloc(sizeof(int)*n);\r\n   int size = 0;\r\n   for(int i=0;i&lt;n;i++)\r\n   {\r\n   int t;\r\n   cin&gt;&gt;t;\r\n   insert(heap,&amp;size,t);\r\n   }\r\n   int count=0,sum=0;\r\n\r\n   while(k&gt;=0 &amp;&amp; size)\r\n   {\r\n   k -= extract(heap,&amp;size);\r\n   count++;\r\n   }\r\n   cout&lt;&lt;count-1&lt;&lt;endl;\r\n\r\n   }\r\n   return 0;\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\t\t\t\t\t <div role=\"tabpanel\" class=\"tab-pane \" id=\"tabs_desc_1680_3\">\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.*;\r\nimport java.io.*;\r\npublic class Main { \r\n     private int[] Heap; \r\n     private int size; \r\n     private int maxsize; \r\n     private static final int FRONT = 1; \r\n     public Main(int maxsize) \r\n     { \r\n          this.maxsize = maxsize; \r\n          this.size = 0; \r\n          Heap = new int[this.maxsize + 1]; \r\n          Heap[0] = Integer.MIN_VALUE; \r\n     } \r\n     private int parent(int pos) \r\n     { \r\n          return pos \/ 2; \r\n     } \r\n     private int leftChild(int pos) \r\n     { \r\n          return (2 * pos); \r\n     } \r\n     private int rightChild(int pos) \r\n     { \r\n          return (2 * pos) + 1; \r\n     } \r\n     \/\/ Function that returns true if the passed \r\n     \/\/ node is a leaf node \r\n     private boolean isLeaf(int pos) \r\n     { \r\n          if (pos &gt;= (size \/ 2) &amp;&amp; pos &lt;= size) { \r\n               return true; \r\n          } \r\n          return false; \r\n     } \r\n     \/\/ Function to swap two nodes of the heap \r\n     private void swap(int fpos, int spos) \r\n     { \r\n          int tmp; \r\n          tmp = Heap[fpos]; \r\n          Heap[fpos] = Heap[spos]; \r\n          Heap[spos] = tmp; \r\n     } \r\n     \/\/ Function to heapify the node at pos \r\n     private void minHeapify(int pos) \r\n     { \r\n          \/\/ If the node is a non-leaf node and greater \r\n          \/\/ than any of its child \r\n          if (!isLeaf(pos)) { \r\n               if (Heap[pos] &gt; Heap[leftChild(pos)] \r\n                    || Heap[pos] &gt; Heap[rightChild(pos)]) { \r\n                    \/\/ Swap with the left child and heapify \r\n                    \/\/ the left child \r\n                    if (Heap[leftChild(pos)] &lt; Heap[rightChild(pos)]) { \r\n                         swap(pos, leftChild(pos)); \r\n                         minHeapify(leftChild(pos)); \r\n                    } \r\n                    \/\/ Swap with the right child and heapify \r\n                    \/\/ the right child \r\n                    else { \r\n                         swap(pos, rightChild(pos)); \r\n                         minHeapify(rightChild(pos)); \r\n                    } \r\n               } \r\n          } \r\n     } \r\n     \/\/ Function to insert a node into the heap \r\n     public void insert(int element) \r\n     { \r\n          if (size &gt;= maxsize) { \r\n               return; \r\n          } \r\n          Heap[++size] = element; \r\n          int current = size; \r\n          while (current != 1 &amp;&amp; Heap[current] &lt; Heap[parent(current)]) { \r\n               swap(current, parent(current)); \r\n               current = parent(current); \r\n          } \r\n     } \r\n     public int remove() \r\n     { \r\n          int popped = Heap[FRONT]; \r\n          Heap[FRONT] = Heap[size--]; \r\n          minHeapify(FRONT); \r\n          return popped; \r\n     } \r\n     \/\/ Driver code \r\n     public static void main(String[] arg) \r\n     { \r\n     Scanner sc = new Scanner(System.in);\r\n     int t = sc.nextInt();\r\n     while(t--&gt;0)\r\n     {\r\n     int n = sc.nextInt();\r\n     int k = sc.nextInt();\r\n     int []a = new int[n];\r\n     Main minHeap = new Main(n); \r\n     for(int i=0;i&lt;n;i++)\r\n     {\r\n          a[i] = sc.nextInt();\r\n          minHeap.insert(a[i]);\r\n     }\r\n\r\n          int count=0,sum=0;\r\n\r\n     while(k&gt;=0)\r\n     {\r\n          k -= minHeap.remove();\r\n          count++;\r\n     }\r\n\r\n          System.out.println(count-1); \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_1680 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_1680 a\"),jQuery(\"#tab-content_1680\"));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;1685&quot;]<\/p>\n<p>This article tried to discuss the concept of <strong>heap<\/strong>. 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 book costs, and k amount of money. We need to find the maximum number of books we can buy with the amount k. Solution Approach : Introduction : In order to buy maximum number of books we have to buy the books [&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-1674","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 | Maximum Books | Prepbytes<\/title>\n<meta name=\"description\" content=\"We Are Given N Book Costs, and K Amount of Money. We Need to Find the Maximum Number of Books We Can Buy With the Amount K.\" \/>\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\/maximum-books\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Heap | Maximum Books | Prepbytes\" \/>\n<meta property=\"og:description\" content=\"We Are Given N Book Costs, and K Amount of Money. We Need to Find the Maximum Number of Books We Can Buy With the Amount K.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/prepbytes.com\/blog\/maximum-books\/\" \/>\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:29:58+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-03-29T09:59:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645527877949-Article_390.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\/maximum-books\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/maximum-books\/\"},\"author\":{\"name\":\"Prepbytes\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e\"},\"headline\":\"Maximum Books\",\"datePublished\":\"2020-07-01T09:29:58+00:00\",\"dateModified\":\"2022-03-29T09:59:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/maximum-books\/\"},\"wordCount\":511,\"commentCount\":0,\"publisher\":{\"@id\":\"http:\/\/43.205.93.38\/#organization\"},\"image\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/maximum-books\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645527877949-Article_390.png\",\"articleSection\":[\"Heap\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/prepbytes.com\/blog\/maximum-books\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/prepbytes.com\/blog\/maximum-books\/\",\"url\":\"https:\/\/prepbytes.com\/blog\/maximum-books\/\",\"name\":\"Heap | Maximum Books | Prepbytes\",\"isPartOf\":{\"@id\":\"http:\/\/43.205.93.38\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/maximum-books\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/maximum-books\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645527877949-Article_390.png\",\"datePublished\":\"2020-07-01T09:29:58+00:00\",\"dateModified\":\"2022-03-29T09:59:10+00:00\",\"description\":\"We Are Given N Book Costs, and K Amount of Money. We Need to Find the Maximum Number of Books We Can Buy With the Amount K.\",\"breadcrumb\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/maximum-books\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/prepbytes.com\/blog\/maximum-books\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/prepbytes.com\/blog\/maximum-books\/#primaryimage\",\"url\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645527877949-Article_390.png\",\"contentUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645527877949-Article_390.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/prepbytes.com\/blog\/maximum-books\/#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\":\"Maximum Books\"}]},{\"@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 | Maximum Books | Prepbytes","description":"We Are Given N Book Costs, and K Amount of Money. We Need to Find the Maximum Number of Books We Can Buy With the Amount K.","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\/maximum-books\/","og_locale":"en_US","og_type":"article","og_title":"Heap | Maximum Books | Prepbytes","og_description":"We Are Given N Book Costs, and K Amount of Money. We Need to Find the Maximum Number of Books We Can Buy With the Amount K.","og_url":"https:\/\/prepbytes.com\/blog\/maximum-books\/","og_site_name":"PrepBytes Blog","article_publisher":"https:\/\/www.facebook.com\/prepbytes0211\/","article_published_time":"2020-07-01T09:29:58+00:00","article_modified_time":"2022-03-29T09:59:10+00:00","og_image":[{"url":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645527877949-Article_390.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\/maximum-books\/#article","isPartOf":{"@id":"https:\/\/prepbytes.com\/blog\/maximum-books\/"},"author":{"name":"Prepbytes","@id":"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e"},"headline":"Maximum Books","datePublished":"2020-07-01T09:29:58+00:00","dateModified":"2022-03-29T09:59:10+00:00","mainEntityOfPage":{"@id":"https:\/\/prepbytes.com\/blog\/maximum-books\/"},"wordCount":511,"commentCount":0,"publisher":{"@id":"http:\/\/43.205.93.38\/#organization"},"image":{"@id":"https:\/\/prepbytes.com\/blog\/maximum-books\/#primaryimage"},"thumbnailUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645527877949-Article_390.png","articleSection":["Heap"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/prepbytes.com\/blog\/maximum-books\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/prepbytes.com\/blog\/maximum-books\/","url":"https:\/\/prepbytes.com\/blog\/maximum-books\/","name":"Heap | Maximum Books | Prepbytes","isPartOf":{"@id":"http:\/\/43.205.93.38\/#website"},"primaryImageOfPage":{"@id":"https:\/\/prepbytes.com\/blog\/maximum-books\/#primaryimage"},"image":{"@id":"https:\/\/prepbytes.com\/blog\/maximum-books\/#primaryimage"},"thumbnailUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645527877949-Article_390.png","datePublished":"2020-07-01T09:29:58+00:00","dateModified":"2022-03-29T09:59:10+00:00","description":"We Are Given N Book Costs, and K Amount of Money. We Need to Find the Maximum Number of Books We Can Buy With the Amount K.","breadcrumb":{"@id":"https:\/\/prepbytes.com\/blog\/maximum-books\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/prepbytes.com\/blog\/maximum-books\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/prepbytes.com\/blog\/maximum-books\/#primaryimage","url":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645527877949-Article_390.png","contentUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645527877949-Article_390.png"},{"@type":"BreadcrumbList","@id":"https:\/\/prepbytes.com\/blog\/maximum-books\/#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":"Maximum Books"}]},{"@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\/1674","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=1674"}],"version-history":[{"count":10,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/1674\/revisions"}],"predecessor-version":[{"id":8341,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/1674\/revisions\/8341"}],"wp:attachment":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/media?parent=1674"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/categories?post=1674"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/tags?post=1674"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}