#include <iostream>
#include <algorithm>
using namespace std;
//赚积分下资源
struct upoint{double x;double y;};
upoint ipoint[55];
bool cmp(upoint a,upoint b)
{
return a.x<b.x||(a.y<b.y&&a.x==b.x);
}
int stack[55];
double Xmult(upoint a,upoint b,upoint c)
{
return (a.x-c.x)*(b.y-c.y)-(b.x-c.x)*(a.y-c.y);
}
int main()
{
int a,b;
int i=0;
for(;cin>>a>>b;ipoint[i].x=1.0*a,ipoint[i++].y=1.0*b);
sort(ipoint,ipoint+i,cmp);
int top=1;
for(int j=0;j<3;j++)stack[j]=j;
for(int j=2;j<i;j++)
{
while(top>0&&Xmult(ipoint[j],ipoint[stack[top]],ipoint[stack[top-1]])>0)--top;
stack[++top]=j;
}
int t=top;
stack[++top]=i-2;
for(int j=i-3;j>=0;j--)
{
while(top>t&&Xmult(ipoint[j],ipoint[stack[top]],ipoint[stack[top-1]])>0)--top;
stack[++top]=j;
}
int k;
for(int j=0;j<top;j++)
if(ipoint[stack[j]].x==0&&ipoint[stack[j]].y==0){k=j;break;}
for(int j=k;j<top;j++)
printf("(%.0lf,%.0lf)\n",ipoint[stack[j]].x,ipoint[stack[j]].y);
for(int j=0;j<k;j++)
printf("(%.0lf,%.0lf)\n",ipoint[stack[j]].x,ipoint[stack[j]].y);
//system("pause");
return 0;
}
poj2007
最新推荐文章于 2019-09-20 00:45:50 发布