南邮 OJ 1702 农田开发

农田开发

时间限制(普通/Java) :  1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
总提交 : 46            测试通过 : 29 

比赛描述

    有一块农田,田地里安放上N个小木桩,木桩的占地面积忽略不计。选择三个小木桩,使得三个小木桩的围成的三角形占地面积最大。



输入

    第一行一个整数N(3<=n<=100),便是木桩个数。

    接下来N行,每行含有两个整数xi和yi(-10000<=xi,yi<=10000),表示第i个木桩的平面坐标。

输出

    仅含有一个数,表示得到的农田面积的最大值,结果保留一位小数。

样例输入

4
0 0
0 1
1 0
1 1

样例输出

0.5

题目来源

NJU




#include<iostream>
using namespace std;

int main(){
	double a[100][2], area, max_area = 0;
	int n, i, j, k;
	scanf("%d", &n);
	for(i = 0; i < n; ++i){
		scanf("%lf %lf", &a[i][0], &a[i][1]);
	}
	for(i = 0; i + 2 < n; ++i){
		for(j = i + 1; j < n; ++j){
			for(k = j + 1; k < n; ++k){
				area = a[i][0] * a[j][1] - a[j][0] * a[i][1] +
						a[j][0] * a[k][1] - a[k][0] * a[j][1] +
						a[k][0] * a[i][1] - a[i][0] * a[k][1];
				if(area < 0){
					area = -area;
				}
				if(max_area < area){
					max_area = area;
				}
			}
		}
	}
	printf("%.1lf\n", max_area / 2);
}


你可能感兴趣的:(ACM,南邮OJ,农田开发)