{"id":1700,"date":"2020-07-01T09:38:02","date_gmt":"2020-07-01T09:38:02","guid":{"rendered":"https:\/\/blog.prepbytes.com\/?p=1700"},"modified":"2022-03-25T11:41:10","modified_gmt":"2022-03-25T11:41:10","slug":"small-group","status":"publish","type":"post","link":"https:\/\/prepbytes.com\/blog\/small-group\/","title":{"rendered":"Small Group"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645768088292-Article_486.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>Hard<\/p>\n<\/blockquote>\n<h3>Problem Statement :<\/h3>\n<blockquote>\n<p>Given an array of <code>N<\/code> integers, we want to know whether it is possible to divide the students into contiguous groups of minimum size 3 such that in every group there are no two students of the same score and the score value of every student of the group is consecutive integers.<br \/>\nPrint Yes if possible else print No<\/p>\n<\/blockquote>\n<p><a href=\"https:\/\/mycode.prepbytes.com\/problems\/heaps\/SMALLG\" title=\"Go to mycode.prepbytes.com\" target=\"_blank\" rel=\"noopener noreferrer\"><u><strong><\/strong><\/u><\/a><\/p>\n<h4>Examples:<\/h4>\n<p><img decoding=\"async\" src=\"https:\/\/prepbytes.com\/blog\/wp-content\/uploads\/2020\/06\/SMALLG.png\" alt=\"\" \/><\/p>\n<h3>Solution Approach :<\/h3>\n<h4>Introduction :<\/h4>\n<blockquote>\n<p>The idea here is to try to greedily add elements to the shortest subsequence possible before creating a new subsequence. A hash array is used to keep track of where each subsequence is currently ending, and for each subsequence ending at <code>i<\/code>, there is a minheap that keeps track of the shortest subsequence ending at <code>i<\/code>.<\/p>\n<\/blockquote>\n<h4>Description :<\/h4>\n<blockquote>\n<ul>\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>If we can greedily extend a subsequence for a particular number <code>j<\/code>, we do so by adding it to the shortest subsequence ending at <code>j-1<\/code> and then update where that subsequence ends. Otherwise, we create a new subsequence that ends at <code>j<\/code>.<\/p>\n<\/li>\n<li>\n<p>Then, we go through all the heaps and check if any represent a subsequence with length of less than <code>3<\/code>. If so, then it is not possible to satisfy the problem constraint, and so we immediately return false. Otherwise, we return true upon checking the lengths of all the subsequences.<\/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<\/blockquote>\n<h3>Algorithms :<\/h3>\n<blockquote>\n<h4><strong>Insert()<\/strong> :<\/h4>\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><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<\/blockquote>\n<h4><strong>Heapify ()<\/strong> :<\/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<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_1695 {\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_1695 .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_1695 .wpsm_nav-tabs {\r\n    border-bottom: 0px solid #ddd;\r\n}\r\n#tab_container_1695 .wpsm_nav-tabs > li.active > a, #tab_container_1695 .wpsm_nav-tabs > li.active > a:hover, #tab_container_1695 .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_1695 .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_1695 .wpsm_nav-tabs > li > a:focus {\r\noutline: 0px !important;\r\n}\r\n\r\n#tab_container_1695 .wpsm_nav-tabs > li > a:before {\r\n\tdisplay:none !important;\r\n}\r\n#tab_container_1695 .wpsm_nav-tabs > li > a:after {\r\n\tdisplay:none !important ;\r\n}\r\n#tab_container_1695 .wpsm_nav-tabs > li{\r\npadding:0px !important ;\r\nmargin:0px;\r\n}\r\n\r\n#tab_container_1695 .wpsm_nav-tabs > li > a:hover , #tab_container_1695 .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_1695 .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_1695 .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_1695 .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_1695 .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_1695 .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_1695 .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_1695 .wpsm_nav-tabs > li {\r\n\t\t\t\t\r\n\t}\r\n\t#tab_container_1695 .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_1695 .wpsm_nav-tabs > li {\r\n\t\t\t\t\r\n\t}\r\n\t#tab_container_1695 .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_1695 .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_1695\" >\r\n\t \r\n\t\t\t\t\t<ul class=\"wpsm_nav wpsm_nav-tabs\" role=\"tablist\" id=\"myTab_1695\">\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_1695_1\" aria-controls=\"tabs_desc_1695_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_1695_2\" aria-controls=\"tabs_desc_1695_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_1695_3\" aria-controls=\"tabs_desc_1695_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_1695\">\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_1695_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\n#include &lt;stdlib.h&gt;\r\n\r\n\r\ntypedef struct heap_s {\r\n    int capacity;\r\n    int size;\r\n    \/\/ arr[size][0] max value of sequence\r\n    \/\/ arr[size][1] length of sequence\r\n    int** arr;\r\n} heap_t;\r\n\r\nheap_t* init(int);\r\nvoid insert(heap_t*, int, int);\r\nint* top(heap_t*);\r\nvoid pop(heap_t*);\r\nint empty(heap_t*);\r\n\r\n\r\nheap_t* init(int max)\r\n{\r\n    heap_t* heap = (heap_t*)malloc(sizeof(heap_t));\r\n    heap-&gt;capacity = max;\r\n    heap-&gt;size = 0;\r\n    heap-&gt;arr = (int**)malloc(sizeof(int*) * (max + 1));\r\n    return heap;\r\n}\r\n\r\n\/\/ if a &lt; b\r\nint cmp(int* a, int* b)\r\n{\r\n    return a[0] == b[0] ? b[1] &gt; a[1] : b[0] &gt; a[0];\r\n}\r\n\r\nvoid swap(int** a, int i, int j)\r\n{\r\n    int* tmp = a[i];\r\n    a[i] = a[j];\r\n    a[j] = tmp;\r\n}\r\n\r\nvoid insert(heap_t* heap, int val, int length)\r\n{\r\n    int* node = (int*)malloc(sizeof(int) * 2);\r\n    node[0] = val, node[1] = length;\r\n    heap-&gt;arr[++heap-&gt;size] = node;\r\n    for (int i = heap-&gt;size; i &gt; 1 &amp;&amp; cmp(heap-&gt;arr[i], heap-&gt;arr[i \/ 2]); i \/= 2) {\r\n        swap(heap-&gt;arr, i, i \/ 2);\r\n    }\r\n}\r\nint* top(heap_t* heap)\r\n{\r\n    return heap-&gt;arr[1];\r\n}\r\nvoid pop(heap_t* heap)\r\n{\r\n    heap-&gt;arr[1] = heap-&gt;arr[heap-&gt;size--];\r\n    for (int i = 1; i * 2 &lt;= heap-&gt;size;) {\r\n        \/\/ find smaller child to compare with the current node\r\n        int child = cmp(heap-&gt;arr[i * 2], heap-&gt;arr[i * 2 + 1]) ? i * 2 : i * 2 + 1;\r\n        if (cmp(heap-&gt;arr[child], heap-&gt;arr[i])) {\r\n            \/\/ swap if child is smaller\r\n            swap(heap-&gt;arr, child, i);\r\n            i = child;\r\n        } else\r\n            break;\r\n    }\r\n}\r\nint empty(heap_t* heap)\r\n{\r\n    return heap-&gt;size == 0;\r\n}\r\n\r\nint isPossible(int* nums, int numsSize)\r\n{\r\n    heap_t* heap = init(numsSize);\r\n    for (int i = 0; i &lt; numsSize; i++) {\r\n        \/\/ can't put value to the sequence any more\r\n        while (!empty(heap) &amp;&amp; nums[i] - top(heap)[0] &gt; 1) {\r\n            \/\/ find invalid sequence, return false\r\n            if (top(heap)[1] &lt; 3)\r\n                return 0;\r\n            pop(heap);\r\n        }\r\n        if (empty(heap) || nums[i] == top(heap)[0]) {\r\n            \/\/ add a new sequence\r\n            insert(heap, nums[i], 1);\r\n        } else {\r\n            \/\/ update the old sequence's value and length\r\n            int length = top(heap)[1] + 1;\r\n            pop(heap);\r\n            insert(heap, nums[i], length);\r\n        }\r\n    }\r\n    while (!empty(heap)) {\r\n        \/\/ find invalid sequence, return false\r\n        if (top(heap)[1] &lt; 3)\r\n            return 0;\r\n        pop(heap);\r\n    }\r\n    return 1;\r\n}\r\n\r\n\r\nvoid swapp(int *xp, int *yp) \r\n{ \r\n    int temp = *xp; \r\n    *xp = *yp; \r\n    *yp = temp; \r\n} \r\n\r\nvoid selectionSort(int arr[], int n) \r\n{ \r\n    int i, j, min_idx; \r\n    for (i = 0; i &lt; n-1; i++) \r\n    { \r\n        min_idx = i; \r\n        for (j = i+1; j &lt; n; j++) \r\n          if (arr[j] &lt; arr[min_idx]) \r\n            min_idx = j; \r\n        swapp(&amp;arr[min_idx], &amp;arr[i]); \r\n    } \r\n} \r\n\r\nint main()\r\n{\r\n  int t;\r\n  scanf(&quot;%d&quot;,&amp;t);\r\n  while(t--&gt;0)\r\n  {\r\n    int n;\r\n    scanf(&quot;%d&quot;,&amp;n);\r\n    int *a = (int*)malloc(sizeof(int)*n);\r\n    for(int i=0;i&lt;n;i++)\r\n     scanf(&quot;%d&quot;,&amp;a[i]);\r\n    selectionSort(a,n);\r\n    if(isPossible(a, n))\r\n     printf(&quot;Yes&#92;n&quot;);\r\n    else\r\n     printf(&quot;No&#92;n&quot;);\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_1695_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\nint 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  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  return 0;\r\n}\r\n<\/pre>\r\n<!-- \/wp:enlighter\/codeblock -->\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_1695_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_1695 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_1695 a\"),jQuery(\"#tab-content_1695\"));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;1702&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 Hard Problem Statement : Given an array of N integers, we want to know whether it is possible to divide the students into contiguous groups of minimum size 3 such that in every group there are no two students of the same score and the score value of every student [&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-1700","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 | Small Group | Prepbytes<\/title>\n<meta name=\"description\" content=\"The Idea Here Is to Try to Greedily Add Elements to the Shortest Subsequence Possible Before Creating a New Subsequence. a Hash 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\/small-group\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Heap | Small Group | Prepbytes\" \/>\n<meta property=\"og:description\" content=\"The Idea Here Is to Try to Greedily Add Elements to the Shortest Subsequence Possible Before Creating a New Subsequence. a Hash Array .\" \/>\n<meta property=\"og:url\" content=\"https:\/\/prepbytes.com\/blog\/small-group\/\" \/>\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:38:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-03-25T11:41:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645768088292-Article_486.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\/small-group\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/small-group\/\"},\"author\":{\"name\":\"Prepbytes\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e\"},\"headline\":\"Small Group\",\"datePublished\":\"2020-07-01T09:38:02+00:00\",\"dateModified\":\"2022-03-25T11:41:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/small-group\/\"},\"wordCount\":510,\"commentCount\":0,\"publisher\":{\"@id\":\"http:\/\/43.205.93.38\/#organization\"},\"image\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/small-group\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645768088292-Article_486.png\",\"articleSection\":[\"Heap\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/prepbytes.com\/blog\/small-group\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/prepbytes.com\/blog\/small-group\/\",\"url\":\"https:\/\/prepbytes.com\/blog\/small-group\/\",\"name\":\"Heap | Small Group | Prepbytes\",\"isPartOf\":{\"@id\":\"http:\/\/43.205.93.38\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/small-group\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/small-group\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645768088292-Article_486.png\",\"datePublished\":\"2020-07-01T09:38:02+00:00\",\"dateModified\":\"2022-03-25T11:41:10+00:00\",\"description\":\"The Idea Here Is to Try to Greedily Add Elements to the Shortest Subsequence Possible Before Creating a New Subsequence. a Hash Array .\",\"breadcrumb\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/small-group\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/prepbytes.com\/blog\/small-group\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/prepbytes.com\/blog\/small-group\/#primaryimage\",\"url\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645768088292-Article_486.png\",\"contentUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645768088292-Article_486.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/prepbytes.com\/blog\/small-group\/#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\":\"Small Group\"}]},{\"@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 | Small Group | Prepbytes","description":"The Idea Here Is to Try to Greedily Add Elements to the Shortest Subsequence Possible Before Creating a New Subsequence. a Hash 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\/small-group\/","og_locale":"en_US","og_type":"article","og_title":"Heap | Small Group | Prepbytes","og_description":"The Idea Here Is to Try to Greedily Add Elements to the Shortest Subsequence Possible Before Creating a New Subsequence. a Hash Array .","og_url":"https:\/\/prepbytes.com\/blog\/small-group\/","og_site_name":"PrepBytes Blog","article_publisher":"https:\/\/www.facebook.com\/prepbytes0211\/","article_published_time":"2020-07-01T09:38:02+00:00","article_modified_time":"2022-03-25T11:41:10+00:00","og_image":[{"url":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645768088292-Article_486.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\/small-group\/#article","isPartOf":{"@id":"https:\/\/prepbytes.com\/blog\/small-group\/"},"author":{"name":"Prepbytes","@id":"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e"},"headline":"Small Group","datePublished":"2020-07-01T09:38:02+00:00","dateModified":"2022-03-25T11:41:10+00:00","mainEntityOfPage":{"@id":"https:\/\/prepbytes.com\/blog\/small-group\/"},"wordCount":510,"commentCount":0,"publisher":{"@id":"http:\/\/43.205.93.38\/#organization"},"image":{"@id":"https:\/\/prepbytes.com\/blog\/small-group\/#primaryimage"},"thumbnailUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645768088292-Article_486.png","articleSection":["Heap"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/prepbytes.com\/blog\/small-group\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/prepbytes.com\/blog\/small-group\/","url":"https:\/\/prepbytes.com\/blog\/small-group\/","name":"Heap | Small Group | Prepbytes","isPartOf":{"@id":"http:\/\/43.205.93.38\/#website"},"primaryImageOfPage":{"@id":"https:\/\/prepbytes.com\/blog\/small-group\/#primaryimage"},"image":{"@id":"https:\/\/prepbytes.com\/blog\/small-group\/#primaryimage"},"thumbnailUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645768088292-Article_486.png","datePublished":"2020-07-01T09:38:02+00:00","dateModified":"2022-03-25T11:41:10+00:00","description":"The Idea Here Is to Try to Greedily Add Elements to the Shortest Subsequence Possible Before Creating a New Subsequence. a Hash Array .","breadcrumb":{"@id":"https:\/\/prepbytes.com\/blog\/small-group\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/prepbytes.com\/blog\/small-group\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/prepbytes.com\/blog\/small-group\/#primaryimage","url":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645768088292-Article_486.png","contentUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645768088292-Article_486.png"},{"@type":"BreadcrumbList","@id":"https:\/\/prepbytes.com\/blog\/small-group\/#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":"Small Group"}]},{"@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\/1700","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=1700"}],"version-history":[{"count":6,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/1700\/revisions"}],"predecessor-version":[{"id":8233,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/1700\/revisions\/8233"}],"wp:attachment":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/media?parent=1700"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/categories?post=1700"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/tags?post=1700"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}