{"id":2368,"date":"2020-07-29T07:34:12","date_gmt":"2020-07-29T07:34:12","guid":{"rendered":"https:\/\/blog.prepbytes.com\/?p=2368"},"modified":"2022-03-31T12:16:25","modified_gmt":"2022-03-31T12:16:25","slug":"points-collisionpaid","status":"publish","type":"post","link":"https:\/\/prepbytes.com\/blog\/points-collisionpaid\/","title":{"rendered":"Points Collision"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1648726218523-Points%20Collision.png\" alt=\"\" \/><\/p>\n<h3>CONCEPTS USED:<\/h3>\n<blockquote>\n<p>Computational geometry.<\/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>A segment of line is defined as the line connecting two points in the Cartesian Coordinate System. The segments are defined by start and end points<br \/>\n(Xi,Yi) and (Xj,Yj) (1&lt;=i,j&lt;=n). Coordinates of these points are integer numbers with real value smaller than 1000<br \/>\n. Length of each segment is positive.<br \/>\nWhen 2 segments don&#039;t have a common point then it is said that segments don&#039;t collide. In anyother case segments collide. Be aware that segments collide even if they have only one point in common.Segment is said to be isolated if it doesn&#039;t collide with all the other segments that are given, i.e.segmenti is isolated when for each 1&lt;=j&lt;=n (i!=j), segments i and j don&#039;t collide. You are asked to find number T &#8211; How many segments are isolated.<\/p>\n<\/blockquote>\n<p><a href=\"https:\/\/www.prepbytes.com\/panel\/mycourses\/mentors-coding-program\/c++\/week\/24\/computational-geometry\/codingAssignment\/LINPT\" 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\n3\n3\n0 0 2 0\n1 -1 1 1\n2 2 3 3\n2\n0 0 1 1\n1 0 0 1\n2\n0 0 0 1\n0 2 0 3\n\nOutput\n1\n0\n2<\/code><\/pre>\n<h3>BRUTE FORCE:<\/h3>\n<blockquote>\n<p>Naive Algorithm A naive solution to solve this problem is to check every pair of lines and check if the pair intersects or not. We can check two line segments in O(1) time. Therefore, this approach takes O(n*n).<\/p>\n<\/blockquote>\n<h3>Sweep Line Algorithm:<\/h3>\n<blockquote>\n<p>We can solve this problem in O(nLogn) time using Sweep Line Algorithm. The algorithm first sorts the end points along the x axis from left to right, then it passes a vertical line through all points from left to right and checks for intersections. Following are detailed steps.<\/p>\n<ol>\n<li>\n<p>Let there be n given lines. There must be 2n end points to represent the n lines. Sort all points according to x coordinates. While sorting maintain a flag to indicate whether this point is left point of its line or right point.<\/p>\n<\/li>\n<li>\n<p>Start from the leftmost point. Do following for every point<\/p>\n<\/li>\n<\/ol>\n<\/blockquote>\n<p>a.If the current point is a left point of its line segment, check for intersection of its line segment with the segments just above and below it. And add its line to active line segments (line segments for which left end point is seen, but right end point is not seen yet).  Note that we consider only those neighbors which are still active.<\/p>\n<p>b.If the current point is a right point, remove its line segment from active list and check whether its two active neighbors (points just above and below) intersect with each other.<\/p>\n<blockquote>\n<p>The step 2 is like passing a vertical line from all points starting from the leftmost point to the rightmost point. That is why this algorithm is called Sweep Line Algorithm. <\/p>\n<\/blockquote>\n<h3>SOLUTIONS:<\/h3>\n<p>\t\t\t\t\t\t<style>\r\n\t\t\t\t\r\n\t\t\t\t\t#tab_container_2369 {\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_2369 .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_2369 .wpsm_nav-tabs {\r\n    border-bottom: 0px solid #ddd;\r\n}\r\n#tab_container_2369 .wpsm_nav-tabs > li.active > a, #tab_container_2369 .wpsm_nav-tabs > li.active > a:hover, #tab_container_2369 .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_2369 .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_2369 .wpsm_nav-tabs > li > a:focus {\r\noutline: 0px !important;\r\n}\r\n\r\n#tab_container_2369 .wpsm_nav-tabs > li > a:before {\r\n\tdisplay:none !important;\r\n}\r\n#tab_container_2369 .wpsm_nav-tabs > li > a:after {\r\n\tdisplay:none !important ;\r\n}\r\n#tab_container_2369 .wpsm_nav-tabs > li{\r\npadding:0px !important ;\r\nmargin:0px;\r\n}\r\n\r\n#tab_container_2369 .wpsm_nav-tabs > li > a:hover , #tab_container_2369 .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_2369 .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_2369 .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_2369 .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_2369 .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_2369 .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_2369 .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_2369 .wpsm_nav-tabs > li {\r\n\t\t\t\t\r\n\t}\r\n\t#tab_container_2369 .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_2369 .wpsm_nav-tabs > li {\r\n\t\t\t\t\r\n\t}\r\n\t#tab_container_2369 .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_2369 .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_2369\" >\r\n\t \r\n\t\t\t\t\t<ul class=\"wpsm_nav wpsm_nav-tabs\" role=\"tablist\" id=\"myTab_2369\">\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_2369_1\" aria-controls=\"tabs_desc_2369_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_2369_2\" aria-controls=\"tabs_desc_2369_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\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_2369\">\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_2369_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#define min(x, y) ((x) &lt; (y) ? (x) : (y))\r\n#define max(x, y) ((x) &gt; (y) ? (x) : (y))\r\nstruct Point {\r\n    double x, y;\r\n};\r\nstruct Segment {\r\n    Point s, t;\r\n};\r\ndouble in(double a, double b, double c) {\r\n    return c &gt;= a &amp;&amp; c &lt;= b;\r\n}\r\nint onLine(Segment a, Point c) {\r\n    static double minx, maxx, miny, maxy;\r\n    minx = min(a.s.x, a.t.x);\r\n    maxx = max(a.s.x, a.t.x);\r\n    miny = min(a.s.y, a.t.y);\r\n    maxy = max(a.s.y, a.t.y);\r\n    if(in(minx, maxx, c.x) != 0 &amp;&amp; in(miny, maxy, c.y) != 0) {\r\n        if((a.s.x-a.t.x)*(c.y-a.s.y) == (a.s.y-a.t.y)*(c.x-a.s.x)) {\r\n            return 1;\r\n        }\r\n    }\r\n    return 0;\r\n}\r\ndouble cross(Point &amp;o, Point &amp;a, Point &amp;b) {\r\n    return (a.x-o.x)*(b.y-o.y)-(a.y-o.y)*(b.x-o.x);\r\n}\r\nint intersection(Segment a, Segment b) {\r\n    if(onLine(a, b.s) || onLine(a, b.t) || onLine(b, a.s) || onLine(b, a.t))\r\n        return 1;\r\n    if(cross(a.s, a.t, b.s)*cross(a.s, a.t, b.t) &lt; 0 &amp;&amp;\r\n       cross(a.t, a.s, b.s)*cross(a.t, a.s, b.t) &lt; 0 &amp;&amp;\r\n       cross(b.s, b.t, a.s)*cross(b.s, b.t, a.t) &lt; 0 &amp;&amp;\r\n       cross(b.t, b.s, a.s)*cross(b.t, b.s, a.t) &lt; 0\r\n       )\r\n        return 1;\r\n    return 0;\r\n}\r\nint main() {\r\n    int t, n, i, j;\r\n    Segment line[1000];\r\n    scanf(&quot;%d&quot;, &amp;t);\r\n    while(t--) {\r\n        scanf(&quot;%d&quot;, &amp;n);\r\n        for(i = 0; i &lt; n; i++)\r\n            scanf(&quot;%lf %lf %lf %lf&quot;, &amp;line[i].s.x, &amp;line[i].s.y, &amp;line[i].t.x, &amp;line[i].t.y);\r\n        int ans = 0;\r\n        for(i = 0; i &lt; n; i++) {\r\n            int flag = 0;\r\n            for(j = 0; j &lt; n; j++) {\r\n                if(i == j)\r\n                    continue;\r\n                if(intersection(line[i], line[j])) {\r\n                    flag = 1;\r\n                    break;\r\n                }\r\n            }\r\n            if(flag == 0)\r\n                ans++;\r\n        }\r\n        printf(&quot;%d&#92;n&quot;, ans);\r\n    }\r\n    return 0;\r\n}\r\n\r\n<\/pre>\r\n<!-- \/wp:enlighter\/codeblock -->\r\nco\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_2369_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\n#define min(x, y) ((x) &lt; (y) ? (x) : (y))\r\n#define max(x, y) ((x) &gt; (y) ? (x) : (y))\r\nstruct Point {\r\n    double x, y;\r\n};\r\nstruct Segment {\r\n    Point s, t;\r\n};\r\ndouble in(double a, double b, double c) {\r\n    return c &gt;= a &amp;&amp; c &lt;= b;\r\n}\r\nint onLine(Segment a, Point c) {\r\n    static double minx, maxx, miny, maxy;\r\n    minx = min(a.s.x, a.t.x);\r\n    maxx = max(a.s.x, a.t.x);\r\n    miny = min(a.s.y, a.t.y);\r\n    maxy = max(a.s.y, a.t.y);\r\n    if(in(minx, maxx, c.x) != 0 &amp;&amp; in(miny, maxy, c.y) != 0) {\r\n        if((a.s.x-a.t.x)*(c.y-a.s.y) == (a.s.y-a.t.y)*(c.x-a.s.x)) {\r\n            return 1;\r\n        }\r\n    }\r\n    return 0;\r\n}\r\ndouble cross(Point &amp;o, Point &amp;a, Point &amp;b) {\r\n    return (a.x-o.x)*(b.y-o.y)-(a.y-o.y)*(b.x-o.x);\r\n}\r\nint intersection(Segment a, Segment b) {\r\n    if(onLine(a, b.s) || onLine(a, b.t) || onLine(b, a.s) || onLine(b, a.t))\r\n        return 1;\r\n    if(cross(a.s, a.t, b.s)*cross(a.s, a.t, b.t) &lt; 0 &amp;&amp;\r\n       cross(a.t, a.s, b.s)*cross(a.t, a.s, b.t) &lt; 0 &amp;&amp;\r\n       cross(b.s, b.t, a.s)*cross(b.s, b.t, a.t) &lt; 0 &amp;&amp;\r\n       cross(b.t, b.s, a.s)*cross(b.t, b.s, a.t) &lt; 0\r\n       )\r\n        return 1;\r\n    return 0;\r\n}\r\nint main() {\r\n    int t, n, i, j;\r\n    Segment line[1000];\r\n    scanf(&quot;%d&quot;, &amp;t);\r\n    while(t--) {\r\n        scanf(&quot;%d&quot;, &amp;n);\r\n        for(i = 0; i &lt; n; i++)\r\n            scanf(&quot;%lf %lf %lf %lf&quot;, &amp;line[i].s.x, &amp;line[i].s.y, &amp;line[i].t.x, &amp;line[i].t.y);\r\n        int ans = 0;\r\n        for(i = 0; i &lt; n; i++) {\r\n            int flag = 0;\r\n            for(j = 0; j &lt; n; j++) {\r\n                if(i == j)\r\n                    continue;\r\n                if(intersection(line[i], line[j])) {\r\n                    flag = 1;\r\n                    break;\r\n                }\r\n            }\r\n            if(flag == 0)\r\n                ans++;\r\n        }\r\n        printf(&quot;%d&#92;n&quot;, ans);\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\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_2369 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_2369 a\"),jQuery(\"#tab-content_2369\"));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[forminator_quiz id=&quot;2372&quot;]<\/p>\n<p>This article tried to discuss the concept of Computational Geometry.Hope this blog helps you solve the problem based on Computational Geometry.To practice more problems you can check out <a href=\"#\"><\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>CONCEPTS USED: Computational geometry. DIFFICULTY LEVEL: Hard PROBLEM STATEMENT(SIMPLIFIED): A segment of line is defined as the line connecting two points in the Cartesian Coordinate System. The segments are defined by start and end points (Xi,Yi) and (Xj,Yj) (1&lt;=i,j&lt;=n). Coordinates of these points are integer numbers with real value smaller than 1000 . Length of [&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":[130],"tags":[],"class_list":["post-2368","post","type-post","status-publish","format-standard","hentry","category-computational-geometry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Computational Geometry | Points Collisionpaid | Prepbytes<\/title>\n<meta name=\"description\" content=\"We Can Solve This Problem in O(nlogn) Time Using Sweep Line Algorithm. The Algorithm First Sorts the End Points Along the X Axis from Left to Right.\" \/>\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\/points-collisionpaid\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Computational Geometry | Points Collisionpaid | Prepbytes\" \/>\n<meta property=\"og:description\" content=\"We Can Solve This Problem in O(nlogn) Time Using Sweep Line Algorithm. The Algorithm First Sorts the End Points Along the X Axis from Left to Right.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/prepbytes.com\/blog\/points-collisionpaid\/\" \/>\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-29T07:34:12+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-03-31T12:16:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1648726218523-Points%20Collision.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\/points-collisionpaid\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/points-collisionpaid\/\"},\"author\":{\"name\":\"Prepbytes\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e\"},\"headline\":\"Points Collision\",\"datePublished\":\"2020-07-29T07:34:12+00:00\",\"dateModified\":\"2022-03-31T12:16:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/points-collisionpaid\/\"},\"wordCount\":468,\"commentCount\":0,\"publisher\":{\"@id\":\"http:\/\/43.205.93.38\/#organization\"},\"image\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/points-collisionpaid\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1648726218523-Points%20Collision.png\",\"articleSection\":[\"Computational Geometry\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/prepbytes.com\/blog\/points-collisionpaid\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/prepbytes.com\/blog\/points-collisionpaid\/\",\"url\":\"https:\/\/prepbytes.com\/blog\/points-collisionpaid\/\",\"name\":\"Computational Geometry | Points Collisionpaid | Prepbytes\",\"isPartOf\":{\"@id\":\"http:\/\/43.205.93.38\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/points-collisionpaid\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/points-collisionpaid\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1648726218523-Points%20Collision.png\",\"datePublished\":\"2020-07-29T07:34:12+00:00\",\"dateModified\":\"2022-03-31T12:16:25+00:00\",\"description\":\"We Can Solve This Problem in O(nlogn) Time Using Sweep Line Algorithm. The Algorithm First Sorts the End Points Along the X Axis from Left to Right.\",\"breadcrumb\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/points-collisionpaid\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/prepbytes.com\/blog\/points-collisionpaid\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/prepbytes.com\/blog\/points-collisionpaid\/#primaryimage\",\"url\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1648726218523-Points%20Collision.png\",\"contentUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1648726218523-Points%20Collision.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/prepbytes.com\/blog\/points-collisionpaid\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\/\/43.205.93.38\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Computational Geometry\",\"item\":\"https:\/\/prepbytes.com\/blog\/category\/computational-geometry\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Points Collision\"}]},{\"@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":"Computational Geometry | Points Collisionpaid | Prepbytes","description":"We Can Solve This Problem in O(nlogn) Time Using Sweep Line Algorithm. The Algorithm First Sorts the End Points Along the X Axis from Left to Right.","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\/points-collisionpaid\/","og_locale":"en_US","og_type":"article","og_title":"Computational Geometry | Points Collisionpaid | Prepbytes","og_description":"We Can Solve This Problem in O(nlogn) Time Using Sweep Line Algorithm. The Algorithm First Sorts the End Points Along the X Axis from Left to Right.","og_url":"https:\/\/prepbytes.com\/blog\/points-collisionpaid\/","og_site_name":"PrepBytes Blog","article_publisher":"https:\/\/www.facebook.com\/prepbytes0211\/","article_published_time":"2020-07-29T07:34:12+00:00","article_modified_time":"2022-03-31T12:16:25+00:00","og_image":[{"url":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1648726218523-Points%20Collision.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\/points-collisionpaid\/#article","isPartOf":{"@id":"https:\/\/prepbytes.com\/blog\/points-collisionpaid\/"},"author":{"name":"Prepbytes","@id":"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e"},"headline":"Points Collision","datePublished":"2020-07-29T07:34:12+00:00","dateModified":"2022-03-31T12:16:25+00:00","mainEntityOfPage":{"@id":"https:\/\/prepbytes.com\/blog\/points-collisionpaid\/"},"wordCount":468,"commentCount":0,"publisher":{"@id":"http:\/\/43.205.93.38\/#organization"},"image":{"@id":"https:\/\/prepbytes.com\/blog\/points-collisionpaid\/#primaryimage"},"thumbnailUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1648726218523-Points%20Collision.png","articleSection":["Computational Geometry"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/prepbytes.com\/blog\/points-collisionpaid\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/prepbytes.com\/blog\/points-collisionpaid\/","url":"https:\/\/prepbytes.com\/blog\/points-collisionpaid\/","name":"Computational Geometry | Points Collisionpaid | Prepbytes","isPartOf":{"@id":"http:\/\/43.205.93.38\/#website"},"primaryImageOfPage":{"@id":"https:\/\/prepbytes.com\/blog\/points-collisionpaid\/#primaryimage"},"image":{"@id":"https:\/\/prepbytes.com\/blog\/points-collisionpaid\/#primaryimage"},"thumbnailUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1648726218523-Points%20Collision.png","datePublished":"2020-07-29T07:34:12+00:00","dateModified":"2022-03-31T12:16:25+00:00","description":"We Can Solve This Problem in O(nlogn) Time Using Sweep Line Algorithm. The Algorithm First Sorts the End Points Along the X Axis from Left to Right.","breadcrumb":{"@id":"https:\/\/prepbytes.com\/blog\/points-collisionpaid\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/prepbytes.com\/blog\/points-collisionpaid\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/prepbytes.com\/blog\/points-collisionpaid\/#primaryimage","url":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1648726218523-Points%20Collision.png","contentUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1648726218523-Points%20Collision.png"},{"@type":"BreadcrumbList","@id":"https:\/\/prepbytes.com\/blog\/points-collisionpaid\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/43.205.93.38\/"},{"@type":"ListItem","position":2,"name":"Computational Geometry","item":"https:\/\/prepbytes.com\/blog\/category\/computational-geometry\/"},{"@type":"ListItem","position":3,"name":"Points Collision"}]},{"@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\/2368","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=2368"}],"version-history":[{"count":8,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/2368\/revisions"}],"predecessor-version":[{"id":8425,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/2368\/revisions\/8425"}],"wp:attachment":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/media?parent=2368"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/categories?post=2368"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/tags?post=2368"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}