南邮仙林自行车停放场
时间限制(普通/Java) :
1000 MS/ 3000 MS 运行内存限制 : 65536 KByte
总提交 : 465 测试通过 : 95
总提交 : 465 测试通过 : 95
比赛描述
好消息!南邮规划建设自行车停放场,现已选定多个场地,它们均为规则多边形。现请你帮助学校确定哪块场地面积最大,这里以鼎山之顶为平面坐标原点,按顺时针或逆时针给出顶点坐标。
输入
输入数据中含有一些多边形场地(1≤数量≤20),按输入顺序编号(从1开始)。每个多边形场地的第一行数据n(3≤n≤10),后续n行分别给出顶点的平面坐标(平面两个坐标的绝对值≤50)。
输出
输出面积最大的多边形场地序号。当面积最大的多边形场地有多个时,输出这些场地中的最小序号
样例输入
2
3
0 0
0 1
1 0
4
0 0
0 1
1 1
1 0
样例输出
2
题目来源
“IBM南邮杯”个人赛2009
#include<iostream>
using namespace std;
int main(){
int n,m,i,j,max_no;
double p[10][2];
double area,max_area=0;
cin>>n;
for(j=1;j<=n;++j){
cin>>m;
for(i=0;i<m;++i){
cin>>p[i][0]>>p[i][1];
}
area = p[m-1][0]*p[0][1] - p[0][0]*p[m-1][1];
for(i=0;i<m-1;++i){
area += p[i][0]*p[i+1][1]-p[i+1][0]*p[i][1];
}
area = area>=0?area:-area;
if(max_area<area){
max_area = area;
max_no = j;
}
}
cout<<max_no<<endl;
}