#include<iostream>
#include <cmath>
#include <cstdio>
#include <cstring>
using namespace std;
char threePoint[10010][5];
double area[10010];
int main()
{
int n;
while(cin>>n&&n)
{
int num_area=0;
int x[17],y[17];
char str[17];
for(int i=0; i<n; i++)
cin>>str[i]>>x[i]>>y[i];
for(int i=0; i<n-2; i++)
for(int j=i+1; j<n-1; j++)
for(int k=j+1; k<n; k++)
{
double a=0.5*fabs((y[k]-y[i])*(x[j]-x[i])-(y[j]-y[i])*(x[k]-x[i]));//求出三个点的面积
int flag=1;
double area1,area2,area3;
for(int l=0; l<n; l++)//除去上面三个点,剩下的点
{
if(l!=i&&l!=j&&l!=k)
{
area1=0.5*fabs((y[k]-y[l])*(x[j]-x[l])-(y[j]-y[l])*(x[k]-x[l]));
area2=0.5*fabs((y[k]-y[i])*(x[l]-x[i])-(y[l]-y[i])*(x[k]-x[i]));
area3=0.5*fabs((y[l]-y[i])*(x[j]-x[i])-(y[j]-y[i])*(x[l]-x[i]));//和上面个点中任意两个点的面积
if(a==(area1+area2+area3))//如果相等说明这个点在上面三个点组成的三角形中
{
flag=0;//标记是否相同
break;
}
}
}
if(flag)//如果相同,添加到一个数组中,此数组中全为三角形本身中不含其它点的三角形的面积
{
area[num_area]=a;
threePoint[num_area][0]=str[i];
threePoint[num_area][1]=str[j];
threePoint[num_area][2]=str[k];
threePoint[num_area][3]='\0';
num_area++;
}
}
double max=-1;
int flag;
for(int i=0; i<num_area; i++)//找出这个数组中最大的面积
{
if(area[i]>max)
{
max=area[i];
flag=i;//标记最大的位置
}
}
cout<<threePoint[flag]<<endl;//输出最大三角形面积对应的三个点
}
return 0;
}
uva 10112 Myacm Triangles
最新推荐文章于 2014-07-29 20:28:52 发布