{"id":15,"date":"2022-06-04T10:52:00","date_gmt":"2022-06-04T02:52:00","guid":{"rendered":"http:\/\/ubuntu.tim-wcx.ltd\/wordpress\/index.php\/2022\/06\/04\/2020-09-21-%e5%87%b8%e5%8c%85%e7%ae%97%e6%b3%95\/"},"modified":"2022-06-04T10:52:00","modified_gmt":"2022-06-04T02:52:00","slug":"2020-09-21-%e5%87%b8%e5%8c%85%e7%ae%97%e6%b3%95","status":"publish","type":"post","link":"https:\/\/wordpress.tim-wcx.ltd\/index.php\/2022\/06\/04\/2020-09-21-%e5%87%b8%e5%8c%85%e7%ae%97%e6%b3%95\/","title":{"rendered":"2020-09-21 \u51f8\u5305\u7b97\u6cd5"},"content":{"rendered":"<p><svg  style=\"display: none;\">\n                        <path stroke-linecap=\"round\" d=\"M5,0 0,2.5 5,5z\" id=\"raphael-marker-block\" style=\"-webkit-tap-highlight-color: rgba(0, 0, 0, 0);\"><\/path>\n                    <\/svg><\/p>\n<p><a href=\"http:\/\/icpc.upc.edu.cn\/problem.php?cid=2585&#038;pid=7\">http:\/\/icpc.upc.edu.cn\/problem.php?cid=2585&#038;pid=7<\/a><\/p>\n<h5><a id=\"_1\"><\/a>\u9898\u76ee\u63cf\u8ff0<\/h5>\n<p>Recently, the nation was shocked by news of Sungai Kim Kim incident in Pasir Gudang, Johor, which has been polluted by chemical waste. Thousands of people who are affected had experienced nausea, dizziness and vomiting, and more than 100 schools were ordered to shut. In order to ensure that such incident will not happen again, an early warning system need o be developed so that residents can make early preparation, and authorities are able to move and act much faster.<\/p>\n<p>A group of scientists has formed a committee to handle the incident, and a smart system with Internet of Things (IoT) sensors was suggested. Numerous sensors which can sense and monitor damages to the environment, either air or water, have been strategically installed around the state, and their coordinates are also recorded. However, the proposed system encountered a failure during its first testing phase. They want you to fix the problem in determining whether the given coordinates of sensors are safe or in the affected areas.<\/p>\n<p>An affected area is defined as the polygon with the minimum length perimeter that can enclose all sensors that trigger warning signal within that area. For example, the sensors (represented by dots) of an affected area and its associated polygon, as well as safe (represented by triangles) and unsafe (represented by diamonds) points of the first dataset are illustrated below.<br \/> <img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/img_convert\/8aefbc1b1c57a8e0d937af8bc1c17698.png#pic_center\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\"><\/p>\n<h5><a id=\"_9\"><\/a>\u8f93\u5165<\/h5>\n<p>The input will contain records of data for several test cases of affected areas. The first line of each data set contains a non-negative integer T, the number of test cases (1\u2264T\u226450). Each test case starts with two non-negative integer C and P which is the number of coordinates (3\u2264C\u226450), and points (1\u2264P\u226450), respectively. The next C lines contain coordinates (x-coordinate, y-coordinate) of each installed sensor, separated with blank spaces. The following P lines contain coordinates (x-coordinate, y-coordinate) of certain locations in the state, separated with blank spaces. All coordinates are integers between \u2212500 and 500 inclusive.<\/p>\n<h5><a id=\"_12\"><\/a>\u8f93\u51fa<\/h5>\n<p>For each test case, output the following item:<\/p>\n<p>First line: The number of the test cases. The first record corresponds to Case1, the second to Case2 , etc.<\/p>\n<p>Next line: A listing of all the points that appear on the perimeter of the affected area. The points must be identified in the standard form \u201cx-coordinate y- coordinate\u201d. The listing must be oriented counter-clockwise and begin and end with the same point.<\/p>\n<p>Last line: For each point of location in the data set, output the line:<\/p>\n<p>x\u2212coordinatey\u2212coordinateisstatus<br \/> where x\u2212coordinatey\u2212coordinate is the coordinate of the location from the input and status is \u2032safe\u2032 or \u2032unsafe\u2032. A location is considered unsafe it is within the sensor perimeter. A point in exactly at the edge of the perimeter is considered safe.<\/p>\n<h5><a id=\"_24\"><\/a>\u6837\u4f8b\u8f93\u5165<\/h5>\n<pre><code>2\n6 5\n-477 -180\n31 -266\n-474 28\n147 49\n323 -53\n277 -79\n346 488\n-139 -183\n-427 129\n386 -222\n-408 -315\n5 2\n-52 -325\n104 420\n315 356\n-192 8\n493 146\n404 228\n-239 484\n<\/code><\/pre>\n<h5><a id=\"_48\"><\/a>\u6837\u4f8b\u8f93\u51fa<\/h5>\n<pre><code>Case 1\n-477 -180\n31 -266\n323 -53\n147 49\n-474 28\n-477 -180\n346 488 is safe!\n-139 -183 is unsafe!\n-427 129 is safe!\n386 -222 is safe!\n-408 -315 is safe!\n\nCase 2\n-192 8\n-52 -325\n493 146\n315 356\n104 420\n-192 8\n404 228 is unsafe!\n-239 484 is safe!\n<\/code><\/pre>\n<p>\u51f8\u5305\u7b97\u6cd5<\/p>\n<pre><code class=\"prism language-cpp\"><span class=\"token macro property\">#<span class=\"token directive keyword\">include<\/span> <span class=\"token string\"><bits\/stdc++.h><\/span><\/span>\n\n<span class=\"token keyword\">using<\/span> <span class=\"token keyword\">namespace<\/span> std<span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">const<\/span> <span class=\"token keyword\">int<\/span> maxn<span class=\"token operator\">=<\/span><span class=\"token number\">1e3<\/span><span class=\"token operator\">+<\/span><span class=\"token number\">9<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">const<\/span> <span class=\"token keyword\">int<\/span> mod<span class=\"token operator\">=<\/span><span class=\"token number\">1e9<\/span><span class=\"token operator\">+<\/span><span class=\"token number\">7<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">struct<\/span> node\n<span class=\"token punctuation\">{<!-- --><\/span>\n    <span class=\"token keyword\">double<\/span> x<span class=\"token punctuation\">,<\/span>y<span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">struct<\/span> point\n<span class=\"token punctuation\">{<!-- --><\/span>\n    <span class=\"token keyword\">double<\/span> x<span class=\"token punctuation\">,<\/span>y<span class=\"token punctuation\">;<\/span>\n    point <span class=\"token keyword\">friend<\/span> <span class=\"token keyword\">operator<\/span> <span class=\"token operator\">-<\/span> <span class=\"token punctuation\">(<\/span>point a<span class=\"token punctuation\">,<\/span>point b<span class=\"token punctuation\">)<\/span>\n    <span class=\"token punctuation\">{<!-- --><\/span>\n        <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<!-- --><\/span>a<span class=\"token punctuation\">.<\/span>x<span class=\"token operator\">-<\/span>b<span class=\"token punctuation\">.<\/span>x<span class=\"token punctuation\">,<\/span>a<span class=\"token punctuation\">.<\/span>y<span class=\"token operator\">-<\/span>b<span class=\"token punctuation\">.<\/span>y<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token punctuation\">}<\/span>\n<span class=\"token punctuation\">}<\/span> p<span class=\"token punctuation\">[<\/span>maxn<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span>s<span class=\"token punctuation\">[<\/span>maxn<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span>query<span class=\"token punctuation\">[<\/span>maxn<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">double<\/span> <span class=\"token function\">dis<\/span><span class=\"token punctuation\">(<\/span>point a<span class=\"token punctuation\">,<\/span>point b<span class=\"token punctuation\">)<\/span>\n<span class=\"token punctuation\">{<!-- --><\/span>\n    point c<span class=\"token operator\">=<\/span>a<span class=\"token operator\">-<\/span>b<span class=\"token punctuation\">;<\/span>\n    <span class=\"token keyword\">return<\/span> <span class=\"token function\">sqrt<\/span><span class=\"token punctuation\">(<\/span>c<span class=\"token punctuation\">.<\/span>x<span class=\"token operator\">*<\/span>c<span class=\"token punctuation\">.<\/span>x<span class=\"token operator\">+<\/span>c<span class=\"token punctuation\">.<\/span>y<span class=\"token operator\">*<\/span>c<span class=\"token punctuation\">.<\/span>y<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token keyword\">double<\/span> <span class=\"token function\">chax<\/span><span class=\"token punctuation\">(<\/span>point a<span class=\"token punctuation\">,<\/span>point b<span class=\"token punctuation\">)<\/span><span class=\"token comment\">\/\/\u53c9\u4e58<\/span>\n<span class=\"token punctuation\">{<!-- --><\/span>\n    <span class=\"token keyword\">return<\/span> a<span class=\"token punctuation\">.<\/span>x<span class=\"token operator\">*<\/span>b<span class=\"token punctuation\">.<\/span>y<span class=\"token operator\">-<\/span>a<span class=\"token punctuation\">.<\/span>y<span class=\"token operator\">*<\/span>b<span class=\"token punctuation\">.<\/span>x<span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token keyword\">double<\/span> <span class=\"token function\">mulx<\/span><span class=\"token punctuation\">(<\/span>point p1<span class=\"token punctuation\">,<\/span>point p2<span class=\"token punctuation\">,<\/span>point p3<span class=\"token punctuation\">)<\/span>\n<span class=\"token punctuation\">{<!-- --><\/span>\n    <span class=\"token keyword\">return<\/span> <span class=\"token function\">chax<\/span><span class=\"token punctuation\">(<\/span>p2<span class=\"token operator\">-<\/span>p1<span class=\"token punctuation\">,<\/span>p3<span class=\"token operator\">-<\/span>p1<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token keyword\">bool<\/span> <span class=\"token function\">cmp2<\/span><span class=\"token punctuation\">(<\/span>point a<span class=\"token punctuation\">,<\/span>point b<span class=\"token punctuation\">)<\/span>\n<span class=\"token punctuation\">{<!-- --><\/span>\n    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>a<span class=\"token punctuation\">.<\/span>x<span class=\"token operator\">!=<\/span>b<span class=\"token punctuation\">.<\/span>x<span class=\"token punctuation\">)<\/span>\n        <span class=\"token keyword\">return<\/span> a<span class=\"token punctuation\">.<\/span>x<span class=\"token operator\"><<\/span>b<span class=\"token punctuation\">.<\/span>x<span class=\"token punctuation\">;<\/span>\n    <span class=\"token keyword\">return<\/span> a<span class=\"token punctuation\">.<\/span>y<span class=\"token operator\"><<\/span>b<span class=\"token punctuation\">.<\/span>y<span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token keyword\">double<\/span> xxx<span class=\"token punctuation\">,<\/span>yyy<span class=\"token punctuation\">;<\/span>\n\nvector<span class=\"token operator\"><<\/span>node<span class=\"token operator\">><\/span>v<span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">int<\/span> <span class=\"token function\">judge<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i<span class=\"token punctuation\">,<\/span><span class=\"token keyword\">int<\/span> j<span class=\"token punctuation\">,<\/span><span class=\"token keyword\">int<\/span> k<span class=\"token punctuation\">)<\/span>\n<span class=\"token punctuation\">{<!-- --><\/span>\n    <span class=\"token keyword\">double<\/span> xpa<span class=\"token operator\">=<\/span>xxx<span class=\"token operator\">-<\/span>v<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>x<span class=\"token punctuation\">;<\/span>\n\n    <span class=\"token keyword\">double<\/span> ypa<span class=\"token operator\">=<\/span>yyy<span class=\"token operator\">-<\/span>v<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>y<span class=\"token punctuation\">;<\/span>\n\n    <span class=\"token keyword\">double<\/span> xpb<span class=\"token operator\">=<\/span>xxx<span class=\"token operator\">-<\/span>v<span class=\"token punctuation\">[<\/span>j<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>x<span class=\"token punctuation\">;<\/span>\n\n    <span class=\"token keyword\">double<\/span> ypb<span class=\"token operator\">=<\/span>yyy<span class=\"token operator\">-<\/span>v<span class=\"token punctuation\">[<\/span>j<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>y<span class=\"token punctuation\">;<\/span>\n\n    <span class=\"token keyword\">double<\/span> xpc<span class=\"token operator\">=<\/span>xxx<span class=\"token operator\">-<\/span>v<span class=\"token punctuation\">[<\/span>k<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>x<span class=\"token punctuation\">;<\/span>\n\n    <span class=\"token keyword\">double<\/span> ypc<span class=\"token operator\">=<\/span>yyy<span class=\"token operator\">-<\/span>v<span class=\"token punctuation\">[<\/span>k<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>y<span class=\"token punctuation\">;<\/span>\n\n    <span class=\"token keyword\">double<\/span> ans1<span class=\"token operator\">=<\/span>xpa<span class=\"token operator\">*<\/span>ypb<span class=\"token operator\">-<\/span>xpb<span class=\"token operator\">*<\/span>ypa<span class=\"token punctuation\">;<\/span>\n\n    <span class=\"token keyword\">double<\/span> ans2<span class=\"token operator\">=<\/span>xpb<span class=\"token operator\">*<\/span>ypc<span class=\"token operator\">-<\/span>xpc<span class=\"token operator\">*<\/span>ypb<span class=\"token punctuation\">;<\/span>\n\n    <span class=\"token keyword\">double<\/span> ans3<span class=\"token operator\">=<\/span>xpc<span class=\"token operator\">*<\/span>ypa<span class=\"token operator\">-<\/span>xpa<span class=\"token operator\">*<\/span>ypc<span class=\"token punctuation\">;<\/span>\n\n    <span class=\"token keyword\">if<\/span><span class=\"token punctuation\">(<\/span>ans1<span class=\"token operator\">==<\/span><span class=\"token number\">0<\/span><span class=\"token operator\">||<\/span>ans2<span class=\"token operator\">==<\/span><span class=\"token number\">0<\/span><span class=\"token operator\">||<\/span>ans3<span class=\"token operator\">==<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span>\n        <span class=\"token keyword\">return<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span>\n\n    <span class=\"token keyword\">if<\/span><span class=\"token punctuation\">(<\/span>ans1<span class=\"token operator\">><\/span><span class=\"token number\">0<\/span><span class=\"token operator\">&&<\/span>ans2<span class=\"token operator\">><\/span><span class=\"token number\">0<\/span><span class=\"token operator\">&&<\/span>ans3<span class=\"token operator\">><\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span>\n        <span class=\"token keyword\">return<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span>\n\n    <span class=\"token keyword\">if<\/span><span class=\"token punctuation\">(<\/span>ans1<span class=\"token operator\"><<\/span><span class=\"token number\">0<\/span><span class=\"token operator\">&&<\/span>ans2<span class=\"token operator\"><<\/span><span class=\"token number\">0<\/span><span class=\"token operator\">&&<\/span>ans3<span class=\"token operator\"><<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span>\n        <span class=\"token keyword\">return<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span>\n\n    <span class=\"token keyword\">return<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n\n<span class=\"token keyword\">int<\/span> <span class=\"token function\">hack<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i<span class=\"token punctuation\">,<\/span><span class=\"token keyword\">int<\/span> j<span class=\"token punctuation\">)<\/span>\n<span class=\"token punctuation\">{<!-- --><\/span>\n    <span class=\"token keyword\">double<\/span> xpa<span class=\"token operator\">=<\/span>xxx<span class=\"token operator\">-<\/span>v<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>x<span class=\"token punctuation\">;<\/span>\n\n    <span class=\"token keyword\">double<\/span> ypa<span class=\"token operator\">=<\/span>yyy<span class=\"token operator\">-<\/span>v<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>y<span class=\"token punctuation\">;<\/span>\n\n    <span class=\"token keyword\">double<\/span> xpb<span class=\"token operator\">=<\/span>xxx<span class=\"token operator\">-<\/span>v<span class=\"token punctuation\">[<\/span>j<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>x<span class=\"token punctuation\">;<\/span>\n\n    <span class=\"token keyword\">double<\/span> ypb<span class=\"token operator\">=<\/span>yyy<span class=\"token operator\">-<\/span>v<span class=\"token punctuation\">[<\/span>j<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>y<span class=\"token punctuation\">;<\/span>\n\n    <span class=\"token keyword\">double<\/span> ans1<span class=\"token operator\">=<\/span>xpa<span class=\"token operator\">*<\/span>ypb<span class=\"token operator\">-<\/span>xpb<span class=\"token operator\">*<\/span>ypa<span class=\"token punctuation\">;<\/span>\n\n    <span class=\"token keyword\">if<\/span><span class=\"token punctuation\">(<\/span>ans1<span class=\"token operator\">==<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span>\n        <span class=\"token keyword\">return<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span>\n\n    <span class=\"token keyword\">return<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n\n<span class=\"token keyword\">int<\/span> <span class=\"token function\">main<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n<span class=\"token punctuation\">{<!-- --><\/span>\n    <span class=\"token keyword\">int<\/span> T<span class=\"token punctuation\">;<\/span>\n    cin<span class=\"token operator\">>><\/span>T<span class=\"token punctuation\">;<\/span>\n    <span class=\"token keyword\">int<\/span> cas<span class=\"token operator\">=<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token keyword\">for<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> j<span class=\"token operator\">=<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span>j<span class=\"token operator\"><=<\/span>T<span class=\"token punctuation\">;<\/span>j<span class=\"token operator\">++<\/span><span class=\"token punctuation\">)<\/span>\n    <span class=\"token punctuation\">{<!-- --><\/span>\n        v<span class=\"token punctuation\">.<\/span><span class=\"token function\">clear<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n        <span class=\"token keyword\">int<\/span> n<span class=\"token punctuation\">,<\/span>q<span class=\"token punctuation\">;<\/span>\n        cin<span class=\"token operator\">>><\/span>n<span class=\"token operator\">>><\/span>q<span class=\"token punctuation\">;<\/span>\n        <span class=\"token keyword\">for<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i<span class=\"token operator\">=<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i<span class=\"token operator\"><<\/span>n<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">++<\/span><span class=\"token punctuation\">)<\/span>\n        <span class=\"token punctuation\">{<!-- --><\/span>\n            cin<span class=\"token operator\">>><\/span>p<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>x<span class=\"token operator\">>><\/span>p<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>y<span class=\"token punctuation\">;<\/span>\n        <span class=\"token punctuation\">}<\/span>\n\n        <span class=\"token function\">sort<\/span><span class=\"token punctuation\">(<\/span>p<span class=\"token punctuation\">,<\/span>p<span class=\"token operator\">+<\/span>n<span class=\"token punctuation\">,<\/span>cmp2<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n        <span class=\"token keyword\">int<\/span> m<span class=\"token operator\">=<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span>\n        <span class=\"token keyword\">for<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i<span class=\"token operator\">=<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i<span class=\"token operator\"><<\/span>n<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">++<\/span><span class=\"token punctuation\">)<\/span>\n        <span class=\"token punctuation\">{<!-- --><\/span>\n            <span class=\"token keyword\">while<\/span><span class=\"token punctuation\">(<\/span>m<span class=\"token operator\">><\/span><span class=\"token number\">1<\/span><span class=\"token operator\">&&<\/span><span class=\"token function\">mulx<\/span><span class=\"token punctuation\">(<\/span>s<span class=\"token punctuation\">[<\/span>m<span class=\"token operator\">-<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span>s<span class=\"token punctuation\">[<\/span>m<span class=\"token operator\">-<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span>p<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token operator\"><=<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span> m<span class=\"token operator\">--<\/span><span class=\"token punctuation\">;<\/span>\n            s<span class=\"token punctuation\">[<\/span>m<span class=\"token operator\">++<\/span><span class=\"token punctuation\">]<\/span><span class=\"token operator\">=<\/span>p<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span>\n        <span class=\"token punctuation\">}<\/span>\n\n        <span class=\"token keyword\">int<\/span> kk<span class=\"token operator\">=<\/span>m<span class=\"token punctuation\">;<\/span>\n        <span class=\"token keyword\">for<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i<span class=\"token operator\">=<\/span>n<span class=\"token operator\">-<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">>=<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">--<\/span><span class=\"token punctuation\">)<\/span>\n        <span class=\"token punctuation\">{<!-- --><\/span>\n            <span class=\"token keyword\">while<\/span><span class=\"token punctuation\">(<\/span>m<span class=\"token operator\">><\/span>kk<span class=\"token operator\">&&<\/span><span class=\"token function\">mulx<\/span><span class=\"token punctuation\">(<\/span>s<span class=\"token punctuation\">[<\/span>m<span class=\"token operator\">-<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span>s<span class=\"token punctuation\">[<\/span>m<span class=\"token operator\">-<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span>p<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token operator\"><=<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span> m<span class=\"token operator\">--<\/span><span class=\"token punctuation\">;<\/span>\n            s<span class=\"token punctuation\">[<\/span>m<span class=\"token operator\">++<\/span><span class=\"token punctuation\">]<\/span><span class=\"token operator\">=<\/span>p<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span>\n        <span class=\"token punctuation\">}<\/span>\n\n        <span class=\"token keyword\">if<\/span><span class=\"token punctuation\">(<\/span>n<span class=\"token operator\">><\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span>\n            m<span class=\"token operator\">--<\/span><span class=\"token punctuation\">;<\/span>\n\n        <span class=\"token function\">printf<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Case %dn\"<\/span><span class=\"token punctuation\">,<\/span>j<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n        <span class=\"token keyword\">for<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i<span class=\"token operator\">=<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i<span class=\"token operator\"><<\/span>m<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">++<\/span><span class=\"token punctuation\">)<\/span>\n        <span class=\"token punctuation\">{<!-- --><\/span>\n            cout<span class=\"token operator\"><<<\/span>s<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>x<span class=\"token operator\"><<<\/span><span class=\"token string\">\" \"<\/span><span class=\"token operator\"><<<\/span>s<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>y<span class=\"token operator\"><<<\/span>endl<span class=\"token punctuation\">;<\/span>\n            v<span class=\"token punctuation\">.<\/span><span class=\"token function\">push_back<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<!-- --><\/span>s<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>x<span class=\"token punctuation\">,<\/span>s<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>y<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n        <span class=\"token punctuation\">}<\/span>\n\n        cout<span class=\"token operator\"><<<\/span>s<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>x<span class=\"token operator\"><<<\/span><span class=\"token string\">\" \"<\/span><span class=\"token operator\"><<<\/span>s<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>y<span class=\"token operator\"><<<\/span>endl<span class=\"token punctuation\">;<\/span>\n        <span class=\"token keyword\">for<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> ii<span class=\"token operator\">=<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span> ii<span class=\"token operator\"><=<\/span>q<span class=\"token punctuation\">;<\/span> ii<span class=\"token operator\">++<\/span><span class=\"token punctuation\">)<\/span>\n        <span class=\"token punctuation\">{<!-- --><\/span>\n            <span class=\"token function\">scanf<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"%lf%lf\"<\/span><span class=\"token punctuation\">,<\/span><span class=\"token operator\">&<\/span>xxx<span class=\"token punctuation\">,<\/span><span class=\"token operator\">&<\/span>yyy<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token keyword\">int<\/span> flag<span class=\"token operator\">=<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token keyword\">for<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i<span class=\"token operator\">=<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i<span class=\"token operator\"><<\/span>v<span class=\"token punctuation\">.<\/span><span class=\"token function\">size<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token operator\">&&<\/span>flag<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">++<\/span><span class=\"token punctuation\">)<\/span>\n            <span class=\"token punctuation\">{<!-- --><\/span>\n                <span class=\"token keyword\">for<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> j<span class=\"token operator\">=<\/span>i<span class=\"token operator\">+<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span> j<span class=\"token operator\"><<\/span>v<span class=\"token punctuation\">.<\/span><span class=\"token function\">size<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token operator\">&&<\/span>flag<span class=\"token punctuation\">;<\/span> j<span class=\"token operator\">++<\/span><span class=\"token punctuation\">)<\/span>\n                <span class=\"token punctuation\">{<!-- --><\/span>\n                    <span class=\"token keyword\">for<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> k<span class=\"token operator\">=<\/span>j<span class=\"token operator\">+<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span> k<span class=\"token operator\"><<\/span>v<span class=\"token punctuation\">.<\/span><span class=\"token function\">size<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token operator\">&&<\/span>flag<span class=\"token punctuation\">;<\/span> k<span class=\"token operator\">++<\/span><span class=\"token punctuation\">)<\/span>\n                    <span class=\"token punctuation\">{<!-- --><\/span>\n                        <span class=\"token keyword\">if<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">judge<\/span><span class=\"token punctuation\">(<\/span>i<span class=\"token punctuation\">,<\/span>j<span class=\"token punctuation\">,<\/span>k<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\n                        <span class=\"token punctuation\">{<!-- --><\/span>\n                            flag<span class=\"token operator\">=<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span>\n                        <span class=\"token punctuation\">}<\/span>\n                    <span class=\"token punctuation\">}<\/span>\n                <span class=\"token punctuation\">}<\/span>\n            <span class=\"token punctuation\">}<\/span>\n\n            <span class=\"token keyword\">for<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i<span class=\"token operator\">=<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i<span class=\"token operator\"><<\/span>v<span class=\"token punctuation\">.<\/span><span class=\"token function\">size<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token operator\">-<\/span><span class=\"token number\">1<\/span><span class=\"token operator\">&&<\/span><span class=\"token operator\">!<\/span>flag<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">++<\/span><span class=\"token punctuation\">)<\/span>\n                <span class=\"token keyword\">if<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">hack<\/span><span class=\"token punctuation\">(<\/span>i<span class=\"token punctuation\">,<\/span>i<span class=\"token operator\">+<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\n                    flag<span class=\"token operator\">=<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token keyword\">if<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">hack<\/span><span class=\"token punctuation\">(<\/span>v<span class=\"token punctuation\">.<\/span><span class=\"token function\">size<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token operator\">-<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\n                flag<span class=\"token operator\">=<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span>\n\n            <span class=\"token keyword\">if<\/span><span class=\"token punctuation\">(<\/span><span class=\"token operator\">!<\/span>flag<span class=\"token punctuation\">)<\/span>\n            <span class=\"token punctuation\">{<!-- --><\/span>\n                <span class=\"token function\">printf<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"%.0f %.0f is unsafe!n\"<\/span><span class=\"token punctuation\">,<\/span>xxx<span class=\"token punctuation\">,<\/span>yyy<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token punctuation\">}<\/span>\n            <span class=\"token keyword\">else<\/span>\n            <span class=\"token punctuation\">{<!-- --><\/span>\n                <span class=\"token function\">printf<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"%.0f %.0f is safe!n\"<\/span><span class=\"token punctuation\">,<\/span>xxx<span class=\"token punctuation\">,<\/span>yyy<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token punctuation\">}<\/span>\n        <span class=\"token punctuation\">}<\/span>\n        <span class=\"token function\">printf<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"n\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token punctuation\">}<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<p>\u51f8\u5305\u7b97\u6cd5\u6a21\u677f<\/p>\n<pre><code class=\"prism language-cpp\"><span class=\"token comment\">\/\/AndrewScan<\/span>\n<span class=\"token comment\">\/* \n * @Author: lzyws739307453 \n * @Language: C++ \n *\/<\/span>\n<span class=\"token macro property\">#<span class=\"token directive keyword\">include<\/span> <span class=\"token string\"><bits\/stdc++.h><\/span><\/span>\n<span class=\"token keyword\">using<\/span> <span class=\"token keyword\">namespace<\/span> std<span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">const<\/span> <span class=\"token keyword\">int<\/span> MAXN <span class=\"token operator\">=<\/span> <span class=\"token number\">105<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">const<\/span> <span class=\"token keyword\">double<\/span> eps <span class=\"token operator\">=<\/span> <span class=\"token number\">1e-8<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">typedef<\/span> <span class=\"token keyword\">struct<\/span> Point <span class=\"token punctuation\">{<!-- --><\/span>\n    <span class=\"token keyword\">double<\/span> x<span class=\"token punctuation\">,<\/span> y<span class=\"token punctuation\">;<\/span>\n    <span class=\"token function\">Point<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">double<\/span> x_ <span class=\"token operator\">=<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">double<\/span> y_ <span class=\"token operator\">=<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">:<\/span> <span class=\"token function\">x<\/span><span class=\"token punctuation\">(<\/span>x_<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token function\">y<\/span><span class=\"token punctuation\">(<\/span>y_<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<!-- --><\/span><span class=\"token punctuation\">}<\/span>\n    <span class=\"token keyword\">bool<\/span> <span class=\"token keyword\">operator<\/span> <span class=\"token operator\"><<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">const<\/span> Point<span class=\"token operator\">&<\/span> s<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">{<!-- --><\/span>\n        <span class=\"token keyword\">return<\/span> x <span class=\"token operator\">!=<\/span> s<span class=\"token punctuation\">.<\/span>x <span class=\"token operator\">?<\/span> x <span class=\"token operator\"><<\/span> s<span class=\"token punctuation\">.<\/span>x <span class=\"token operator\">:<\/span> y <span class=\"token operator\"><<\/span> s<span class=\"token punctuation\">.<\/span>y<span class=\"token punctuation\">;<\/span>\n    <span class=\"token punctuation\">}<\/span>\n<span class=\"token punctuation\">}<\/span>vect<span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">struct<\/span> Point p<span class=\"token punctuation\">[<\/span>MAXN<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> S<span class=\"token punctuation\">[<\/span>MAXN<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> s<span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">int<\/span> <span class=\"token function\">sgn<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">double<\/span> x<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<!-- --><\/span>\n    <span class=\"token keyword\">return<\/span> x <span class=\"token operator\"><<\/span> <span class=\"token operator\">-<\/span>eps <span class=\"token operator\">?<\/span> <span class=\"token operator\">-<\/span><span class=\"token number\">1<\/span> <span class=\"token operator\">:<\/span> x <span class=\"token operator\">><\/span> eps <span class=\"token operator\">?<\/span> <span class=\"token number\">1<\/span> <span class=\"token operator\">:<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\nvect <span class=\"token keyword\">operator<\/span> <span class=\"token operator\">-<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">const<\/span> Point a<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">const<\/span> Point b<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<!-- --><\/span>\n    <span class=\"token keyword\">return<\/span> <span class=\"token function\">vect<\/span><span class=\"token punctuation\">(<\/span>a<span class=\"token punctuation\">.<\/span>x <span class=\"token operator\">-<\/span> b<span class=\"token punctuation\">.<\/span>x<span class=\"token punctuation\">,<\/span> a<span class=\"token punctuation\">.<\/span>y <span class=\"token operator\">-<\/span> b<span class=\"token punctuation\">.<\/span>y<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<span class=\"token keyword\">double<\/span> <span class=\"token function\">Cross<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">const<\/span> vect a<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">const<\/span> vect b<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<!-- --><\/span>\n    <span class=\"token keyword\">return<\/span> a<span class=\"token punctuation\">.<\/span>x <span class=\"token operator\">*<\/span> b<span class=\"token punctuation\">.<\/span>y <span class=\"token operator\">-<\/span> a<span class=\"token punctuation\">.<\/span>y <span class=\"token operator\">*<\/span> b<span class=\"token punctuation\">.<\/span>x<span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<span class=\"token keyword\">double<\/span> <span class=\"token function\">dist<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">const<\/span> Point a<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">const<\/span> Point b<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<!-- --><\/span>\n    <span class=\"token keyword\">return<\/span> <span class=\"token function\">sqrt<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>a<span class=\"token punctuation\">.<\/span>x <span class=\"token operator\">-<\/span> b<span class=\"token punctuation\">.<\/span>x<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">*<\/span> <span class=\"token punctuation\">(<\/span>a<span class=\"token punctuation\">.<\/span>x <span class=\"token operator\">-<\/span> b<span class=\"token punctuation\">.<\/span>x<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">+<\/span> <span class=\"token punctuation\">(<\/span>a<span class=\"token punctuation\">.<\/span>y <span class=\"token operator\">-<\/span> b<span class=\"token punctuation\">.<\/span>y<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">*<\/span> <span class=\"token punctuation\">(<\/span>a<span class=\"token punctuation\">.<\/span>y <span class=\"token operator\">-<\/span> b<span class=\"token punctuation\">.<\/span>y<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<span class=\"token keyword\">bool<\/span> <span class=\"token function\">Onleft<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">const<\/span> Point a<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">const<\/span> Point b<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">const<\/span> Point c<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<!-- --><\/span>\n    <span class=\"token keyword\">return<\/span> <span class=\"token function\">sgn<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">Cross<\/span><span class=\"token punctuation\">(<\/span>b <span class=\"token operator\">-<\/span> a<span class=\"token punctuation\">,<\/span> c <span class=\"token operator\">-<\/span> a<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">><\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<span class=\"token keyword\">bool<\/span> <span class=\"token function\">InTB<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">const<\/span> Point p<span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">const<\/span> Point s<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> n<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<!-- --><\/span>\n    <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">=<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\"><<\/span> n<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">++<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<!-- --><\/span>\n        <span class=\"token keyword\">int<\/span> j <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">(<\/span>i <span class=\"token operator\">+<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">%<\/span> n<span class=\"token punctuation\">;<\/span>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token function\">Cross<\/span><span class=\"token punctuation\">(<\/span>p<span class=\"token punctuation\">[<\/span>j<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">-<\/span> p<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> s <span class=\"token operator\">-<\/span> p<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\"><=<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span>\n            <span class=\"token keyword\">return<\/span> <span class=\"token boolean\">false<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token punctuation\">}<\/span>\n    <span class=\"token keyword\">return<\/span> <span class=\"token boolean\">true<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<span class=\"token keyword\">int<\/span> <span class=\"token function\">AndrewScan<\/span><span class=\"token punctuation\">(<\/span>Point p<span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> n<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<!-- --><\/span>\n    <span class=\"token function\">sort<\/span><span class=\"token punctuation\">(<\/span>p<span class=\"token punctuation\">,<\/span> p <span class=\"token operator\">+<\/span> n<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token keyword\">int<\/span> top <span class=\"token operator\">=<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">=<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\"><<\/span> n<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">++<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<!-- --><\/span>\n        <span class=\"token keyword\">while<\/span> <span class=\"token punctuation\">(<\/span>top <span class=\"token operator\">><\/span> <span class=\"token number\">1<\/span> <span class=\"token operator\">&&<\/span> <span class=\"token operator\">!<\/span><span class=\"token function\">Onleft<\/span><span class=\"token punctuation\">(<\/span>S<span class=\"token punctuation\">[<\/span>top <span class=\"token operator\">-<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> S<span class=\"token punctuation\">[<\/span>top <span class=\"token operator\">-<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> p<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\n            top<span class=\"token operator\">--<\/span><span class=\"token punctuation\">;<\/span>\n        S<span class=\"token punctuation\">[<\/span>top<span class=\"token operator\">++<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> p<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token punctuation\">}<\/span>\n    <span class=\"token keyword\">int<\/span> tmp <span class=\"token operator\">=<\/span> top<span class=\"token punctuation\">;<\/span>\n    <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">=<\/span> n <span class=\"token operator\">-<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">>=<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">--<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<!-- --><\/span>\n        <span class=\"token keyword\">while<\/span> <span class=\"token punctuation\">(<\/span>top <span class=\"token operator\">><\/span> tmp <span class=\"token operator\">&&<\/span> <span class=\"token operator\">!<\/span><span class=\"token function\">Onleft<\/span><span class=\"token punctuation\">(<\/span>S<span class=\"token punctuation\">[<\/span>top <span class=\"token operator\">-<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> S<span class=\"token punctuation\">[<\/span>top <span class=\"token operator\">-<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> p<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\n            top<span class=\"token operator\">--<\/span><span class=\"token punctuation\">;<\/span>\n        S<span class=\"token punctuation\">[<\/span>top<span class=\"token operator\">++<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> p<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token punctuation\">}<\/span>\n    <span class=\"token keyword\">return<\/span> top<span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<span class=\"token keyword\">int<\/span> <span class=\"token function\">main<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<!-- --><\/span>\n    <span class=\"token keyword\">int<\/span> n<span class=\"token punctuation\">,<\/span> q<span class=\"token punctuation\">,<\/span> t<span class=\"token punctuation\">,<\/span> cnt<span class=\"token punctuation\">,<\/span> kase <span class=\"token operator\">=<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token function\">scanf<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"%d\"<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token operator\">&<\/span>t<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token keyword\">while<\/span> <span class=\"token punctuation\">(<\/span>t<span class=\"token operator\">--<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<!-- --><\/span>\n        <span class=\"token function\">scanf<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"%d%d\"<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token operator\">&<\/span>n<span class=\"token punctuation\">,<\/span> <span class=\"token operator\">&<\/span>q<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n        <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">=<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\"><<\/span> n<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">++<\/span><span class=\"token punctuation\">)<\/span>\n            <span class=\"token function\">scanf<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"%lf%lf\"<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token operator\">&<\/span>p<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>x<span class=\"token punctuation\">,<\/span> <span class=\"token operator\">&<\/span>p<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>y<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n        cnt <span class=\"token operator\">=<\/span> <span class=\"token function\">AndrewScan<\/span><span class=\"token punctuation\">(<\/span>p<span class=\"token punctuation\">,<\/span> n<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>n <span class=\"token operator\">><\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span>\n            cnt<span class=\"token operator\">--<\/span><span class=\"token punctuation\">;<\/span>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>kase<span class=\"token punctuation\">)<\/span>\n            <span class=\"token function\">printf<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"n\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n        <span class=\"token function\">printf<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Case %dn\"<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token operator\">++<\/span>kase<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n        <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">=<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\"><<\/span> cnt<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">++<\/span><span class=\"token punctuation\">)<\/span>\n            <span class=\"token function\">printf<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"%.0lf %.0lfn\"<\/span><span class=\"token punctuation\">,<\/span> S<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>x<span class=\"token punctuation\">,<\/span> S<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>y<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n        <span class=\"token function\">printf<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"%.0lf %.0lfn\"<\/span><span class=\"token punctuation\">,<\/span> S<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>x<span class=\"token punctuation\">,<\/span> S<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>y<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n        <span class=\"token keyword\">while<\/span> <span class=\"token punctuation\">(<\/span>q<span class=\"token operator\">--<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<!-- --><\/span>\n            <span class=\"token function\">scanf<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"%lf%lf\"<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token operator\">&<\/span>s<span class=\"token punctuation\">.<\/span>x<span class=\"token punctuation\">,<\/span> <span class=\"token operator\">&<\/span>s<span class=\"token punctuation\">.<\/span>y<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token function\">printf<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"%.0lf %.0lf \"<\/span><span class=\"token punctuation\">,<\/span> s<span class=\"token punctuation\">.<\/span>x<span class=\"token punctuation\">,<\/span> s<span class=\"token punctuation\">.<\/span>y<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token function\">InTB<\/span><span class=\"token punctuation\">(<\/span>S<span class=\"token punctuation\">,<\/span> s<span class=\"token punctuation\">,<\/span> cnt<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\n                <span class=\"token function\">printf<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"is unsafe!n\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token keyword\">else<\/span> <span class=\"token function\">printf<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"is safe!n\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n        <span class=\"token punctuation\">}<\/span>\n    <span class=\"token punctuation\">}<\/span>\n    <span class=\"token keyword\">return<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<\/code><\/pre>\n<pre><code class=\"prism language-cpp\"><span class=\"token macro property\">#<span class=\"token directive keyword\">include<\/span><span class=\"token string\"><iostream><\/span><\/span>\n<span class=\"token macro property\">#<span class=\"token directive keyword\">include<\/span><span class=\"token string\"><cstdio><\/span><\/span>\n<span class=\"token macro property\">#<span class=\"token directive keyword\">include<\/span><span class=\"token string\"><cstring><\/span><\/span>\n<span class=\"token macro property\">#<span class=\"token directive keyword\">include<\/span><span class=\"token string\"><algorithm><\/span><\/span>\n<span class=\"token macro property\">#<span class=\"token directive keyword\">include<\/span><span class=\"token string\"><cmath><\/span><\/span>\n<span class=\"token macro property\">#<span class=\"token directive keyword\">define<\/span> PI 3.1415926535<\/span>\n<span class=\"token keyword\">using<\/span> <span class=\"token keyword\">namespace<\/span> std<span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">struct<\/span> node\n<span class=\"token punctuation\">{<!-- --><\/span>\n    <span class=\"token keyword\">int<\/span> x<span class=\"token punctuation\">,<\/span>y<span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\nnode vex<span class=\"token punctuation\">[<\/span><span class=\"token number\">1000<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><span class=\"token comment\">\/\/\u5b58\u5165\u7684\u6240\u6709\u7684\u70b9<\/span>\nnode stackk<span class=\"token punctuation\">[<\/span><span class=\"token number\">1000<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><span class=\"token comment\">\/\/\u51f8\u5305\u4e2d\u6240\u6709\u7684\u70b9<\/span>\n<span class=\"token keyword\">int<\/span> xx<span class=\"token punctuation\">,<\/span>yy<span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">bool<\/span> <span class=\"token function\">cmp1<\/span><span class=\"token punctuation\">(<\/span>node a<span class=\"token punctuation\">,<\/span>node b<span class=\"token punctuation\">)<\/span><span class=\"token comment\">\/\/\u6392\u5e8f\u627e\u7b2c\u4e00\u4e2a\u70b9<\/span>\n<span class=\"token punctuation\">{<!-- --><\/span>\n    <span class=\"token keyword\">if<\/span><span class=\"token punctuation\">(<\/span>a<span class=\"token punctuation\">.<\/span>y<span class=\"token operator\">==<\/span>b<span class=\"token punctuation\">.<\/span>y<span class=\"token punctuation\">)<\/span>\n        <span class=\"token keyword\">return<\/span> a<span class=\"token punctuation\">.<\/span>x<span class=\"token operator\"><<\/span>b<span class=\"token punctuation\">.<\/span>x<span class=\"token punctuation\">;<\/span>\n    <span class=\"token keyword\">else<\/span>\n        <span class=\"token keyword\">return<\/span> a<span class=\"token punctuation\">.<\/span>y<span class=\"token operator\"><<\/span>b<span class=\"token punctuation\">.<\/span>y<span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<span class=\"token keyword\">int<\/span> <span class=\"token function\">cross<\/span><span class=\"token punctuation\">(<\/span>node a<span class=\"token punctuation\">,<\/span>node b<span class=\"token punctuation\">,<\/span>node c<span class=\"token punctuation\">)<\/span><span class=\"token comment\">\/\/\u8ba1\u7b97\u53c9\u79ef<\/span>\n<span class=\"token punctuation\">{<!-- --><\/span>\n    <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>b<span class=\"token punctuation\">.<\/span>x<span class=\"token operator\">-<\/span>a<span class=\"token punctuation\">.<\/span>x<span class=\"token punctuation\">)<\/span><span class=\"token operator\">*<\/span><span class=\"token punctuation\">(<\/span>c<span class=\"token punctuation\">.<\/span>y<span class=\"token operator\">-<\/span>a<span class=\"token punctuation\">.<\/span>y<span class=\"token punctuation\">)<\/span><span class=\"token operator\">-<\/span><span class=\"token punctuation\">(<\/span>c<span class=\"token punctuation\">.<\/span>x<span class=\"token operator\">-<\/span>a<span class=\"token punctuation\">.<\/span>x<span class=\"token punctuation\">)<\/span><span class=\"token operator\">*<\/span><span class=\"token punctuation\">(<\/span>b<span class=\"token punctuation\">.<\/span>y<span class=\"token operator\">-<\/span>a<span class=\"token punctuation\">.<\/span>y<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<span class=\"token keyword\">double<\/span> <span class=\"token function\">dis<\/span><span class=\"token punctuation\">(<\/span>node a<span class=\"token punctuation\">,<\/span>node b<span class=\"token punctuation\">)<\/span><span class=\"token comment\">\/\/\u8ba1\u7b97\u8ddd\u79bb<\/span>\n<span class=\"token punctuation\">{<!-- --><\/span>\n    <span class=\"token keyword\">return<\/span> <span class=\"token function\">sqrt<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>a<span class=\"token punctuation\">.<\/span>x<span class=\"token operator\">-<\/span>b<span class=\"token punctuation\">.<\/span>x<span class=\"token punctuation\">)<\/span><span class=\"token operator\">*<\/span><span class=\"token punctuation\">(<\/span>a<span class=\"token punctuation\">.<\/span>x<span class=\"token operator\">-<\/span>b<span class=\"token punctuation\">.<\/span>x<span class=\"token punctuation\">)<\/span><span class=\"token operator\">*<\/span><span class=\"token number\">1.0<\/span><span class=\"token operator\">+<\/span><span class=\"token punctuation\">(<\/span>a<span class=\"token punctuation\">.<\/span>y<span class=\"token operator\">-<\/span>b<span class=\"token punctuation\">.<\/span>y<span class=\"token punctuation\">)<\/span><span class=\"token operator\">*<\/span><span class=\"token punctuation\">(<\/span>a<span class=\"token punctuation\">.<\/span>y<span class=\"token operator\">-<\/span>b<span class=\"token punctuation\">.<\/span>y<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<span class=\"token keyword\">bool<\/span> <span class=\"token function\">cmp2<\/span><span class=\"token punctuation\">(<\/span>node a<span class=\"token punctuation\">,<\/span>node b<span class=\"token punctuation\">)<\/span><span class=\"token comment\">\/\/\u6781\u89d2\u6392\u5e8f\u53e6\u4e00\u79cd\u65b9\u6cd5\uff0c\u901f\u5ea6\u5feb<\/span>\n<span class=\"token punctuation\">{<!-- --><\/span>\n    <span class=\"token keyword\">if<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">atan2<\/span><span class=\"token punctuation\">(<\/span>a<span class=\"token punctuation\">.<\/span>y<span class=\"token operator\">-<\/span>yy<span class=\"token punctuation\">,<\/span>a<span class=\"token punctuation\">.<\/span>x<span class=\"token operator\">-<\/span>xx<span class=\"token punctuation\">)<\/span><span class=\"token operator\">!=<\/span><span class=\"token function\">atan2<\/span><span class=\"token punctuation\">(<\/span>b<span class=\"token punctuation\">.<\/span>y<span class=\"token operator\">-<\/span>yy<span class=\"token punctuation\">,<\/span>b<span class=\"token punctuation\">.<\/span>x<span class=\"token operator\">-<\/span>xx<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\n        <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token function\">atan2<\/span><span class=\"token punctuation\">(<\/span>a<span class=\"token punctuation\">.<\/span>y<span class=\"token operator\">-<\/span>yy<span class=\"token punctuation\">,<\/span>a<span class=\"token punctuation\">.<\/span>x<span class=\"token operator\">-<\/span>xx<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token operator\"><<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">atan2<\/span><span class=\"token punctuation\">(<\/span>b<span class=\"token punctuation\">.<\/span>y<span class=\"token operator\">-<\/span>yy<span class=\"token punctuation\">,<\/span>b<span class=\"token punctuation\">.<\/span>x<span class=\"token operator\">-<\/span>xx<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token keyword\">return<\/span> a<span class=\"token punctuation\">.<\/span>x<span class=\"token operator\"><<\/span>b<span class=\"token punctuation\">.<\/span>x<span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<span class=\"token keyword\">bool<\/span> <span class=\"token function\">cmp<\/span><span class=\"token punctuation\">(<\/span>node a<span class=\"token punctuation\">,<\/span>node b<span class=\"token punctuation\">)<\/span><span class=\"token comment\">\/\/\u6781\u89d2\u6392\u5e8f<\/span>\n<span class=\"token punctuation\">{<!-- --><\/span>\n    <span class=\"token keyword\">int<\/span> m<span class=\"token operator\">=<\/span><span class=\"token function\">cross<\/span><span class=\"token punctuation\">(<\/span>vex<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span>a<span class=\"token punctuation\">,<\/span>b<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token keyword\">if<\/span><span class=\"token punctuation\">(<\/span>m<span class=\"token operator\">><\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span>\n        <span class=\"token keyword\">return<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span><span class=\"token punctuation\">(<\/span>m<span class=\"token operator\">==<\/span><span class=\"token number\">0<\/span><span class=\"token operator\">&&<\/span><span class=\"token function\">dis<\/span><span class=\"token punctuation\">(<\/span>vex<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span>a<span class=\"token punctuation\">)<\/span><span class=\"token operator\">-<\/span><span class=\"token function\">dis<\/span><span class=\"token punctuation\">(<\/span>vex<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span>b<span class=\"token punctuation\">)<\/span><span class=\"token operator\"><=<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span>\n        <span class=\"token keyword\">return<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">return<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token comment\">\/*if(m==0)\n        return dis(vex[0],a)-dis(vex[0],b)<=0?true:false;\n    else\n        return m>0?true:false;*\/<\/span>\n<span class=\"token punctuation\">}<\/span>\n<span class=\"token keyword\">int<\/span> <span class=\"token function\">main<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n<span class=\"token punctuation\">{<!-- --><\/span>\n    <span class=\"token keyword\">int<\/span> t<span class=\"token punctuation\">,<\/span>L<span class=\"token punctuation\">;<\/span>\n    <span class=\"token keyword\">while<\/span><span class=\"token punctuation\">(<\/span><span class=\"token operator\">~<\/span><span class=\"token function\">scanf<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"%d\"<\/span><span class=\"token punctuation\">,<\/span><span class=\"token operator\">&<\/span>t<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>t<span class=\"token punctuation\">)<\/span>\n    <span class=\"token punctuation\">{<!-- --><\/span>\n        <span class=\"token keyword\">int<\/span> i<span class=\"token punctuation\">;<\/span>\n        <span class=\"token keyword\">for<\/span><span class=\"token punctuation\">(<\/span>i<span class=\"token operator\">=<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i<span class=\"token operator\"><<\/span>t<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">++<\/span><span class=\"token punctuation\">)<\/span>\n        <span class=\"token punctuation\">{<!-- --><\/span>\n            <span class=\"token function\">scanf<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"%d%d\"<\/span><span class=\"token punctuation\">,<\/span><span class=\"token operator\">&<\/span>vex<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>x<span class=\"token punctuation\">,<\/span><span class=\"token operator\">&<\/span>vex<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>y<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n        <span class=\"token punctuation\">}<\/span>\n        <span class=\"token keyword\">if<\/span><span class=\"token punctuation\">(<\/span>t<span class=\"token operator\">==<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span>\n            <span class=\"token function\">printf<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"%.2fn\"<\/span><span class=\"token punctuation\">,<\/span><span class=\"token number\">0.00<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n        <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span><span class=\"token punctuation\">(<\/span>t<span class=\"token operator\">==<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span>\n            <span class=\"token function\">printf<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"%.2fn\"<\/span><span class=\"token punctuation\">,<\/span><span class=\"token function\">dis<\/span><span class=\"token punctuation\">(<\/span>vex<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span>vex<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n        <span class=\"token keyword\">else<\/span>\n        <span class=\"token punctuation\">{<!-- --><\/span>\n            <span class=\"token function\">memset<\/span><span class=\"token punctuation\">(<\/span>stackk<span class=\"token punctuation\">,<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span><span class=\"token keyword\">sizeof<\/span><span class=\"token punctuation\">(<\/span>stackk<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token function\">sort<\/span><span class=\"token punctuation\">(<\/span>vex<span class=\"token punctuation\">,<\/span>vex<span class=\"token operator\">+<\/span>t<span class=\"token punctuation\">,<\/span>cmp1<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            stackk<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token operator\">=<\/span>vex<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span>\n            xx<span class=\"token operator\">=<\/span>stackk<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>x<span class=\"token punctuation\">;<\/span>\n            yy<span class=\"token operator\">=<\/span>stackk<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>y<span class=\"token punctuation\">;<\/span>\n            <span class=\"token function\">sort<\/span><span class=\"token punctuation\">(<\/span>vex<span class=\"token operator\">+<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span>vex<span class=\"token operator\">+<\/span>t<span class=\"token punctuation\">,<\/span>cmp2<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><span class=\"token comment\">\/\/cmp2\u662f\u66f4\u5feb\u7684\uff0ccmp\u66f4\u5bb9\u6613\u7406\u89e3<\/span>\n            stackk<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token operator\">=<\/span>vex<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><span class=\"token comment\">\/\/\u5c06\u51f8\u5305\u4e2d\u7684\u7b2c\u4e24\u4e2a\u70b9\u5b58\u5165\u51f8\u5305\u7684\u7ed3\u6784\u4f53\u4e2d<\/span>\n            <span class=\"token keyword\">int<\/span> top<span class=\"token operator\">=<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span><span class=\"token comment\">\/\/\u6700\u540e\u51f8\u5305\u4e2d\u62e5\u6709\u70b9\u7684\u4e2a\u6570<\/span>\n            <span class=\"token keyword\">for<\/span><span class=\"token punctuation\">(<\/span>i<span class=\"token operator\">=<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">;<\/span> i<span class=\"token operator\"><<\/span>t<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">++<\/span><span class=\"token punctuation\">)<\/span>\n            <span class=\"token punctuation\">{<!-- --><\/span>\n                <span class=\"token keyword\">while<\/span><span class=\"token punctuation\">(<\/span>i<span class=\"token operator\">>=<\/span><span class=\"token number\">1<\/span><span class=\"token operator\">&&<\/span><span class=\"token function\">cross<\/span><span class=\"token punctuation\">(<\/span>stackk<span class=\"token punctuation\">[<\/span>top<span class=\"token operator\">-<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span>stackk<span class=\"token punctuation\">[<\/span>top<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span>vex<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token operator\"><<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span>   <span class=\"token comment\">\/\/\u5bf9\u4f7f\u7528\u6781\u89d2\u6392\u5e8f\u7684i>=1\u6709\u65f6\u53ef\u4ee5\u4e0d\u7528\uff0c\u4f46\u52a0\u4e0a\u603b\u662f\u597d\u7684<\/span>\n                    top<span class=\"token operator\">--<\/span><span class=\"token punctuation\">;<\/span>\n                stackk<span class=\"token punctuation\">[<\/span><span class=\"token operator\">++<\/span>top<span class=\"token punctuation\">]<\/span><span class=\"token operator\">=<\/span>vex<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span>                                    <span class=\"token comment\">\/\/\u63a7\u5236<0\u6216<=0\u53ef\u4ee5\u63a7\u5236\u91cd\u70b9\uff0c\u5171\u7ebf\u7684\uff0c\u5177\u4f53\u89c6\u9898\u76ee\u800c\u5b9a\u3002<\/span>\n            <span class=\"token punctuation\">}<\/span>\n            <span class=\"token keyword\">double<\/span> s<span class=\"token operator\">=<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token comment\">\/\/for(i=1; i<=top; i++)\/\/\u8f93\u51fa\u51f8\u5305\u4e0a\u7684\u70b9<\/span>\n            <span class=\"token comment\">\/\/cout<<stackk[i].x<<\" \"<<stackk[i].y<<endl;<\/span>\n            <span class=\"token keyword\">for<\/span><span class=\"token punctuation\">(<\/span>i<span class=\"token operator\">=<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span> i<span class=\"token operator\"><=<\/span>top<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">++<\/span><span class=\"token punctuation\">)<\/span>   <span class=\"token comment\">\/\/\u8ba1\u7b97\u51f8\u5305\u7684\u5468\u957f<\/span>\n                s<span class=\"token operator\">+<\/span><span class=\"token operator\">=<\/span><span class=\"token function\">dis<\/span><span class=\"token punctuation\">(<\/span>stackk<span class=\"token punctuation\">[<\/span>i<span class=\"token operator\">-<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span>stackk<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            s<span class=\"token operator\">+<\/span><span class=\"token operator\">=<\/span><span class=\"token function\">dis<\/span><span class=\"token punctuation\">(<\/span>stackk<span class=\"token punctuation\">[<\/span>top<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span>vex<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><span class=\"token comment\">\/\/\u6700\u540e\u4e00\u4e2a\u70b9\u548c\u7b2c\u4e00\u4e2a\u70b9\u4e4b\u95f4\u7684\u8ddd\u79bb<\/span>\n            <span class=\"token comment\">\/*s+=2*PI*L;\n            int ans=s+0.5;\/\/\u56db\u820d\u4e94\u5165\n            printf(\"%dn\",ans);*\/<\/span>\n            <span class=\"token function\">printf<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"%.2lfn\"<\/span><span class=\"token punctuation\">,<\/span>s<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n        <span class=\"token punctuation\">}<\/span>\n    <span class=\"token punctuation\">}<\/span>\n<span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>http:\/\/icpc.upc.edu.cn\/pr&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-15","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/wordpress.tim-wcx.ltd\/index.php\/wp-json\/wp\/v2\/posts\/15","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.tim-wcx.ltd\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.tim-wcx.ltd\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.tim-wcx.ltd\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.tim-wcx.ltd\/index.php\/wp-json\/wp\/v2\/comments?post=15"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.tim-wcx.ltd\/index.php\/wp-json\/wp\/v2\/posts\/15\/revisions"}],"wp:attachment":[{"href":"https:\/\/wordpress.tim-wcx.ltd\/index.php\/wp-json\/wp\/v2\/media?parent=15"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.tim-wcx.ltd\/index.php\/wp-json\/wp\/v2\/categories?post=15"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.tim-wcx.ltd\/index.php\/wp-json\/wp\/v2\/tags?post=15"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}