{"id":1512,"date":"2020-07-01T09:31:25","date_gmt":"2020-07-01T09:31:25","guid":{"rendered":"https:\/\/blog.prepbytes.com\/?p=1512"},"modified":"2022-03-23T11:31:01","modified_gmt":"2022-03-23T11:31:01","slug":"balancing-the-magnets","status":"publish","type":"post","link":"https:\/\/prepbytes.com\/blog\/balancing-the-magnets\/","title":{"rendered":"Balancing the Magnets"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645096049297-Article_263.png\" alt=\"\" \/><\/p>\n<h3>CONCEPTS USED:<\/h3>\n<blockquote>\n<p>Binary Search<\/p>\n<\/blockquote>\n<h3>DIFFICULTY LEVEL:<\/h3>\n<blockquote>\n<p>Hard<\/p>\n<\/blockquote>\n<h3>PROBLEM STATEMENT<code>(<\/code>SIMPLIFIED<code>)<\/code>:<\/h3>\n<blockquote>\n<p>Given an array of <code>N<\/code> size containing the positions of <code>N<\/code> magnets. These magnets are repelling each other. The magnets on the left of a magnet repels it to the right and magnets on the right repels it to left. The force is equal to <code>1\/d<\/code>, where <code>d<\/code> is the distance. Task is to find all the points along the linear line where <code>Net Force<\/code> is <code>Zero<\/code><\/p>\n<p><strong>Note<\/strong>: Distance have to be calculated with the precision of <code>0.0000000000001<\/code>.<\/p>\n<\/blockquote>\n<p><a href=\"https:\/\/mycode.prepbytes.com\/problems\/searching\/MGNTARR\" title=\"Go to mycode.prepbytes.com\" target=\"_blank\" rel=\"noopener noreferrer\"><u><strong><\/strong><\/u><\/a><\/p>\n<h4>For Example:<\/h4>\n<pre><code>Input : arr = [4, 5]\n\nOutput : 4.5\n\nExplanation : At point 4.5 both forces are equally repelling each other.<\/code><\/pre>\n<pre><code>Input : arr = [5, 6, 7, 8]\n\nOutput : 5.38 6.50 7.62\n\nExplanation : \n\nBetween points 5 and 6, 5.38 is the point where net force of all magnets is 0\n\nBetween points 6 and 7, 6.50 is the point where net force of all magnets is 0\n\nBetween points 7 and 8, 7.62 is the point where net force of all magnets is 0<\/code><\/pre>\n<p><strong><em>Can we use <code>Binary Search<\/code> here ?<\/em><\/strong>  <\/p>\n<blockquote>\n<p><strong>Yes<\/strong>, for every consecutive pair we need to find a point in between the pair where <code>net force<\/code> of all magnets becomes 0. In order to find such point <code>Binary Search<\/code> would be an efficient alternative to quickly search for the point in <code>Logarithmic Time Complexity<\/code>.<\/p>\n<\/blockquote>\n<h3>SOLVING APPROACH:<\/h3>\n<ol>\n<li>The idea is to use <code>Binary Search<\/code>.<\/li>\n<li>It is quite observatory fact that for every pair of consecutive elements there will be a point between them where <code>Net Force<\/code> will be <code>0<\/code>.<\/li>\n<li>We will use this observation and run a loop for all such consecutive pairs. Inside this loop, for every pair we will perform <code>Binary Search<\/code> and keep searching for a <code>mid<\/code> point, where <code>net forces<\/code> of all magnets become <code>0<\/code>.<\/li>\n<\/ol>\n<blockquote><p>\n<img decoding=\"async\" src=\"http:\/\/latex.codecogs.com\/svg.latex? \\frac{1}{mid - arr[i]} + \\frac{1}{mid - arr[i+1]} + .... \\frac{1}{mid - arr[n-1]} = 0\" border=\"0\" \/>\n<\/p><\/blockquote>\n<ol start=\"4\">\n<li>As there are <code>N<\/code> points, so we will have  <code>N-1<\/code> points for <code>N-1<\/code> consecutive pairs.<\/li>\n<\/ol>\n<p><strong><em>How is <code>Binary Search<\/code> so fast  ?<\/em><\/strong><\/p>\n<blockquote>\n<ul>\n<li>\n<p><code>Binary Search<\/code> is a <code>Divide and Conquer<\/code> algorithm.<\/p>\n<\/li>\n<li>\n<p>Binary search compares the target value to the middle element of the array. If they are not equal, the half in which the target cannot lie is eliminated and the search continues on the remaining half, again taking the middle element to compare to the target value, and repeating this until the target value is found. If the search ends with the remaining half being empty, the target is not in the array.<\/p>\n<\/li>\n<li>\n<p>Since half of the elements are eliminated in each check, its <code>Time Complexity<\/code> is <code>log2(N)<\/code>, where there are <code>N<\/code> elements in the sorted array.<\/p>\n<\/li>\n<\/ul>\n<\/blockquote>\n<h4>SOLUTIONS:<\/h4>\n<p>\t\t\t\t\t\t<style>\r\n\t\t\t\t\r\n\t\t\t\t\t#tab_container_1517 {\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_1517 .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_1517 .wpsm_nav-tabs {\r\n    border-bottom: 0px solid #ddd;\r\n}\r\n#tab_container_1517 .wpsm_nav-tabs > li.active > a, #tab_container_1517 .wpsm_nav-tabs > li.active > a:hover, #tab_container_1517 .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_1517 .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_1517 .wpsm_nav-tabs > li > a:focus {\r\noutline: 0px !important;\r\n}\r\n\r\n#tab_container_1517 .wpsm_nav-tabs > li > a:before {\r\n\tdisplay:none !important;\r\n}\r\n#tab_container_1517 .wpsm_nav-tabs > li > a:after {\r\n\tdisplay:none !important ;\r\n}\r\n#tab_container_1517 .wpsm_nav-tabs > li{\r\npadding:0px !important ;\r\nmargin:0px;\r\n}\r\n\r\n#tab_container_1517 .wpsm_nav-tabs > li > a:hover , #tab_container_1517 .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_1517 .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_1517 .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_1517 .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_1517 .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_1517 .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_1517 .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_1517 .wpsm_nav-tabs > li {\r\n\t\t\t\t\r\n\t}\r\n\t#tab_container_1517 .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_1517 .wpsm_nav-tabs > li {\r\n\t\t\t\t\r\n\t}\r\n\t#tab_container_1517 .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_1517 .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_1517\" >\r\n\t \r\n\t\t\t\t\t<ul class=\"wpsm_nav wpsm_nav-tabs\" role=\"tablist\" id=\"myTab_1517\">\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_1517_1\" aria-controls=\"tabs_desc_1517_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_1517_2\" aria-controls=\"tabs_desc_1517_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_1517_3\" aria-controls=\"tabs_desc_1517_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_1517\">\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_1517_1\">\r\n\t\t\t\t\t\t\t\t\r\n\r\n<!-- 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\r\n#include &lt;stdio.h&gt;\r\n#include &lt;stdlib.h&gt;\r\n\r\n\/\/used to calculate force acting on a point\r\ndouble force(int arr[],int n, double mid){\r\n\r\n    double force = 0.0;\r\n    for(int i = 0; i &lt; n ; i++){\r\n        force += 1\/(mid-arr[i]);\r\n    }\r\n    return force;\r\n}\r\n\r\ndouble solution(int n, int arr[], double st, double end){\r\n    double mid = (st + end)\/2.0;\r\n    double force_ = force(arr,n, mid);\r\n\r\n    \/* if force becomes equal or nearly equal to zero\r\n fabs() is used for finding absolute values of float and double *\/\r\n    if(fabs(force_) &lt;= 0.0000000000001){\r\n            return mid;\r\n    }\r\n\r\n    \/\/if force is greater than 0\r\n    if(force_ &gt; 0){\r\n        return solution(n, arr, mid , end);\r\n    }\r\n    \/\/if force is less than 0\r\n    else\r\n    {\r\n        return solution(n, arr, st, mid);\r\n    }\r\n} \r\n\r\nint main()\r\n{\r\n  int t; scanf(\"%d\", &amp;t);\r\n  while(t--){\r\n      int n; scanf(\"%d\", &amp;n);\r\n      int arr[n];\r\n      for(int i = 0; i &lt; n ; i++){\r\n        scanf(\"%d\", &amp;arr[i]); \r\n      }\r\n      \/\/we will calculate points between each consecutive pairs\r\n      for(int i = 0 ; i &lt; n-1 ; i++){\r\n          printf(\"%0.2f \", solution(n, arr, arr[i], arr[i+1]));\r\n      }\r\n      printf(\"&#92;n\");\r\n  }\r\n  return 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_1517_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\r\n#include &lt;bits\/stdc++.h&gt;\r\nusing namespace std;\r\n\r\n\/\/used to calculate force acting on a point\r\ndouble force(int arr[],int n, double mid){\r\n\r\n    double force = 0.0;\r\n    for(int i = 0; i &lt; n ; i++){\r\n        force += 1\/(mid-arr[i]);\r\n    }\r\n    return force;\r\n}\r\n\r\ndouble solution(int n, int arr[], double st, double end){\r\n    double mid = (st + end)\/2.0;\r\n    double force_ = force(arr,n, mid);\r\n\r\n    \/\/if force becomes equal or nearly equal to zero\r\n    if(abs(force_) &lt; 0.0000000000001){\r\n            return mid;\r\n    }\r\n\r\n    \/\/if force is greater than 0\r\n    if(force_ &gt; 0){\r\n        return solution(n, arr, mid , end);\r\n    }\r\n    \/\/if force is less than 0\r\n    else\r\n    {\r\n        return solution(n, arr, st, mid);\r\n    }\r\n} \r\n\r\nint main()\r\n{\r\n  int t; cin&gt;&gt;t;\r\n  while(t--){\r\n      int n; cin&gt;&gt;n;\r\n      int arr[n];\r\n      for(int i = 0; i &lt; n ; i++){\r\n        cin&gt;&gt;arr[i]; \r\n      }\r\n      \/\/we will calculate points between each consecutive pairs\r\n      for(int i = 0 ; i &lt; n-1 ; i++){\r\n          cout&lt;&lt;fixed&lt;&lt;setprecision(2)&lt;&lt;solution(n, arr, arr[i], arr[i+1])&lt;&lt;\" \";\r\n      }\r\n      cout&lt;&lt;\"&#92;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_1517_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\n\r\nimport java.util.*;\r\nimport java.io.*;\r\n\r\nimport java.util.Scanner;\r\n\r\npublic class Main {\r\n\r\n     \/\/used to calculate force acting on a point\r\n    private static double force(int[] arr, double mid){\r\n        double force = 0.0;\r\n        for(int i = 0; i &lt; arr.length ; i++){\r\n            force += 1.0\/(mid-arr[i]);\r\n        }\r\n        return force;\r\n    }\r\n\r\n    private static double solution(int n, int[] arr, double st, double end){\r\n        double mid = (st + end)\/2.0;\r\n        double force = force(arr, mid);\r\n\r\n        \/\/if force becomes equal or nearly equal to zero\r\n        if(Math.abs(force) &lt; 0.0000000000001){\r\n                return mid;\r\n        }\r\n        \/\/if force is greater than 0\r\n        if(force &gt; 0){\r\n            return solution(n, arr, mid , end);\r\n        }\r\n        \/\/if force is less than 0\r\n        else\r\n        {\r\n            return solution(n, arr, st, mid);\r\n        }\r\n    }\r\n\r\n    public static void main(String[] args) {\r\n        Scanner sc = new Scanner(System.in);\r\n        int t = sc.nextInt();\r\n        while(t--&gt;0){\r\n            int n = sc.nextInt();\r\n            int[] arr = new int[n];\r\n            for(int i = 0; i &lt; n ; i++){\r\n                arr[i] = sc.nextInt();\r\n            }\r\n            \/\/we will calculate points between each consecutive pairs\r\n            for(int i = 0 ; i &lt; n-1 ; i++){\r\n                System.out.printf(\"%.2f\" ,solution(n, arr, arr[i], arr[i+1]));\r\n                System.out.print(\" \");\r\n            }\r\n            System.out.println(\" \");\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_1517 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_1517 a\"),jQuery(\"#tab-content_1517\"));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<br \/>\n<strong>Space Complexity<\/strong>: O(1)<\/p>\n<p>[forminator_quiz id=&quot;1530&quot;]<\/p>\n<p>This article tried to discuss Binary Search. Hope this blog helps you understand and solve the problem. To practice more problems on Searching you can check out <a href=\"#\"><\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>CONCEPTS USED: Binary Search DIFFICULTY LEVEL: Hard PROBLEM STATEMENT(SIMPLIFIED): Given an array of N size containing the positions of N magnets. These magnets are repelling each other. The magnets on the left of a magnet repels it to the right and magnets on the right repels it to left. The force is equal to 1\/d, [&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":[136],"tags":[],"class_list":["post-1512","post","type-post","status-publish","format-standard","hentry","category-binary-search"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Binary Search | Balancing the Magnets | Prepbytes<\/title>\n<meta name=\"description\" content=\"The Idea Is to Use Binary Search. It T Is Quite Observatory Fact That for Every Pair of Consecutive Elements There Will Be a Point Between Them Where Net Force Will Be 0.\" \/>\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\/balancing-the-magnets\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Binary Search | Balancing the Magnets | Prepbytes\" \/>\n<meta property=\"og:description\" content=\"The Idea Is to Use Binary Search. It T Is Quite Observatory Fact That for Every Pair of Consecutive Elements There Will Be a Point Between Them Where Net Force Will Be 0.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/prepbytes.com\/blog\/balancing-the-magnets\/\" \/>\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:31:25+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-03-23T11:31:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645096049297-Article_263.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=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/prepbytes.com\/blog\/balancing-the-magnets\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/balancing-the-magnets\/\"},\"author\":{\"name\":\"Prepbytes\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e\"},\"headline\":\"Balancing the Magnets\",\"datePublished\":\"2020-07-01T09:31:25+00:00\",\"dateModified\":\"2022-03-23T11:31:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/balancing-the-magnets\/\"},\"wordCount\":340,\"commentCount\":0,\"publisher\":{\"@id\":\"http:\/\/43.205.93.38\/#organization\"},\"image\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/balancing-the-magnets\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645096049297-Article_263.png\",\"articleSection\":[\"binary search\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/prepbytes.com\/blog\/balancing-the-magnets\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/prepbytes.com\/blog\/balancing-the-magnets\/\",\"url\":\"https:\/\/prepbytes.com\/blog\/balancing-the-magnets\/\",\"name\":\"Binary Search | Balancing the Magnets | Prepbytes\",\"isPartOf\":{\"@id\":\"http:\/\/43.205.93.38\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/balancing-the-magnets\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/balancing-the-magnets\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645096049297-Article_263.png\",\"datePublished\":\"2020-07-01T09:31:25+00:00\",\"dateModified\":\"2022-03-23T11:31:01+00:00\",\"description\":\"The Idea Is to Use Binary Search. It T Is Quite Observatory Fact That for Every Pair of Consecutive Elements There Will Be a Point Between Them Where Net Force Will Be 0.\",\"breadcrumb\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/balancing-the-magnets\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/prepbytes.com\/blog\/balancing-the-magnets\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/prepbytes.com\/blog\/balancing-the-magnets\/#primaryimage\",\"url\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645096049297-Article_263.png\",\"contentUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645096049297-Article_263.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/prepbytes.com\/blog\/balancing-the-magnets\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\/\/43.205.93.38\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"binary search\",\"item\":\"https:\/\/prepbytes.com\/blog\/category\/binary-search\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Balancing the Magnets\"}]},{\"@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":"Binary Search | Balancing the Magnets | Prepbytes","description":"The Idea Is to Use Binary Search. It T Is Quite Observatory Fact That for Every Pair of Consecutive Elements There Will Be a Point Between Them Where Net Force Will Be 0.","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\/balancing-the-magnets\/","og_locale":"en_US","og_type":"article","og_title":"Binary Search | Balancing the Magnets | Prepbytes","og_description":"The Idea Is to Use Binary Search. It T Is Quite Observatory Fact That for Every Pair of Consecutive Elements There Will Be a Point Between Them Where Net Force Will Be 0.","og_url":"https:\/\/prepbytes.com\/blog\/balancing-the-magnets\/","og_site_name":"PrepBytes Blog","article_publisher":"https:\/\/www.facebook.com\/prepbytes0211\/","article_published_time":"2020-07-01T09:31:25+00:00","article_modified_time":"2022-03-23T11:31:01+00:00","og_image":[{"url":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645096049297-Article_263.png","type":"","width":"","height":""}],"author":"Prepbytes","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Prepbytes","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/prepbytes.com\/blog\/balancing-the-magnets\/#article","isPartOf":{"@id":"https:\/\/prepbytes.com\/blog\/balancing-the-magnets\/"},"author":{"name":"Prepbytes","@id":"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e"},"headline":"Balancing the Magnets","datePublished":"2020-07-01T09:31:25+00:00","dateModified":"2022-03-23T11:31:01+00:00","mainEntityOfPage":{"@id":"https:\/\/prepbytes.com\/blog\/balancing-the-magnets\/"},"wordCount":340,"commentCount":0,"publisher":{"@id":"http:\/\/43.205.93.38\/#organization"},"image":{"@id":"https:\/\/prepbytes.com\/blog\/balancing-the-magnets\/#primaryimage"},"thumbnailUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645096049297-Article_263.png","articleSection":["binary search"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/prepbytes.com\/blog\/balancing-the-magnets\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/prepbytes.com\/blog\/balancing-the-magnets\/","url":"https:\/\/prepbytes.com\/blog\/balancing-the-magnets\/","name":"Binary Search | Balancing the Magnets | Prepbytes","isPartOf":{"@id":"http:\/\/43.205.93.38\/#website"},"primaryImageOfPage":{"@id":"https:\/\/prepbytes.com\/blog\/balancing-the-magnets\/#primaryimage"},"image":{"@id":"https:\/\/prepbytes.com\/blog\/balancing-the-magnets\/#primaryimage"},"thumbnailUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645096049297-Article_263.png","datePublished":"2020-07-01T09:31:25+00:00","dateModified":"2022-03-23T11:31:01+00:00","description":"The Idea Is to Use Binary Search. It T Is Quite Observatory Fact That for Every Pair of Consecutive Elements There Will Be a Point Between Them Where Net Force Will Be 0.","breadcrumb":{"@id":"https:\/\/prepbytes.com\/blog\/balancing-the-magnets\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/prepbytes.com\/blog\/balancing-the-magnets\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/prepbytes.com\/blog\/balancing-the-magnets\/#primaryimage","url":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645096049297-Article_263.png","contentUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645096049297-Article_263.png"},{"@type":"BreadcrumbList","@id":"https:\/\/prepbytes.com\/blog\/balancing-the-magnets\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/43.205.93.38\/"},{"@type":"ListItem","position":2,"name":"binary search","item":"https:\/\/prepbytes.com\/blog\/category\/binary-search\/"},{"@type":"ListItem","position":3,"name":"Balancing the Magnets"}]},{"@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\/1512","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=1512"}],"version-history":[{"count":9,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/1512\/revisions"}],"predecessor-version":[{"id":8180,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/1512\/revisions\/8180"}],"wp:attachment":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/media?parent=1512"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/categories?post=1512"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/tags?post=1512"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}