1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
#include<algorithm> #include<cmath> #include<iostream> using namespace std; int n; struct { double x,y; Point(double x=0,double y=0):x(x),y(y){} }a[100]; typedef Point Vector; Vector operator - (Point A,Point B){ return Vector(A.x-B.x,A.y-B.y); } Vector operator + (Vector A,Vector B){ return Vector(A.x+B.x,A.y+B.y); } bool operator ==(const Point& a,const Point& b){ return (a.x-b.x)==0&&(a.y-b.y)==0; } double cross(Vector a,Vector b){ return a.x*b.y-a.y*b.x; } double Area(Point A,Point B,Point C){ return fabs(cross(B-A,C-A)); } bool check(int i,int j,int k){ double area1=Area(a[i],a[j],a[k]); for(int ii=1;ii<=n;ii++){ if(ii!=i&&ii!=j&&ii!=k){ double sum0=Area(a[ii],a[i],a[j])+Area(a[ii],a[i],a[k])+Area(a[ii],a[j],a[k]); double sum1=Area(a[i],a[j],a[k]); if(sum0==sum1) return 0; } } return 1; } int main(){ while(~scanf("%d",&n)&&n){ char c; for(int i=1;i<=n;i++){ cin>>c; scanf("%lf%lf",&a[i].x,&a[i].y); } double ans=0; int ans1,ans2,ans3; for(int i=1;i<=n;i++){ for(int j=i+1;j<=n;j++){ for(int k=j+1;k<=n;k++){ double area1=Area(a[i],a[j],a[k]); if(check(i,j,k)){ double area1=Area(a[i],a[j],a[k]); if(ans<=fabs(area1)){ ans=area1; ans1=i,ans2=j,ans3=k; } } } } } printf("%c%c%cn",ans1-1+'A',ans2-1+'A',ans3-1+'A'); } }
|
近期评论