1675: 看看你的心里阴影面积吧︿( ̄︶ ̄)︿
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 58 Solved: 46
[ Submit][ Status][ Web Board]
Description
平面上有n个点,在其中找三个点组成一个三角形,求最大面积
Input
多组测试数据
第一行输入一个n(3<=n<=111)
接下来一行输入n个点的坐标(xi,yi)都为整数且绝对值小于1111。
Output
求最大三角形面积(结果保留整数部分)
Sample Input
3
0 0 1 0 0 1
Sample Output
0
【解析】
直接模拟,算出每一条边的边长,然后排序然后最后三条边肯定最大,由最后三条边构成的面积肯定也是最大的。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{
int n,i,j,m,k,area;
while(~scanf("%d",&n))
{
k=0;
int a[n];
int b[n];
int c[n];
double s;
for(i=0;i<n;i++)
{
scanf("%lf%lf",&a[i],&b[i]);
}
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
c[k++]=sqrt((a[j]-a[i])*(a[j]-a[i])+(b[j]-b[i])*(b[j]-b[i]));
}
}
sort(c,c+k);
s=0.5*(c[k-1]+c[k-2]+c[k-3]);
area=sqrt(s*(s-c[k-1])*(s-c[k-2])*(s-c[k-3]));
printf("%d\n",area);
}
return 0;
}