zzulioj 1805: SC和ta的游泳池 (简单计算几何)
2015-12-09 13:17
232 查看
1805: SC和ta的游泳池
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 141 Solved: 40
SubmitStatusWeb
Board
Description
SC打牌又赢钱了,所以SC想要在他家的别墅里新建一个游泳池。SC决定自己设计游泳池,他在纸上画好了坐标轴后开始方了,所以决定把游泳池设计成矩形的。
思考了几个月后,SC在坐标上描了4个点,而且这4个点正好构成一个矩形,并且矩形的边和坐标轴平行。
SC喜出望外,终于设计好了游泳池,决定打电话给WT请他来参观一下自己设计的游泳池。
WT觉得SC这设计的特别丑,于是用橡皮随手擦了几个点后就走了。
悲痛欲绝的SC觉得自己的审美是没问题的,想要恢复之前画好的矩形,所以急切的想知道剩下的这些点能不能恢复出来原来的矩形。
Input
包含多组测试数据。每组数据第一行为一个正整数N (1 <= N <= 4)。
接下来N行,每行包含两个整数Xi,Yi (-1000 <= Xi,Yi <= 1000).代表第i个点的坐标。
数据保证这些点是原矩形的顶点坐标,并且矩形的边平行于坐标轴。
Output
若可以还原出唯一的矩形,请输出还原出的矩形的面积。如果无法还原出矩形请输出 -1。Sample Input
20 0
1 1
1
1 1
Sample Output
1-1
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; struct zz { int x; int y; }q[5]; int judge(zz a,zz b,zz c) { return abs((b.x-a.x)*(c.y-a.y)-(b.y-a.y)*(c.x-a.x)); } int main() { int n,i,j,k; while(scanf("%d",&n)!=EOF) { for(i=1;i<=n;i++) scanf("%d%d",&q[i].x,&q[i].y); if(n==1) printf("-1\n"); else if(n==2) { if(q[1].x!=q[2].x&&q[1].y!=q[2].y) { int sum=abs((q[2].x-q[1].x)*(q[2].y-q[1].y)); printf("%d\n",sum); } else printf("-1\n"); } else printf("%d\n",judge(q[1],q[2],q[3])); } return 0; }
相关文章推荐
- gcc 编译器 , __builtin_expect() 研究
- 需要继续研究
- PHP编程效率的20个要点
- 单机虚拟化收效甚微
- Ubuntu 添加新分区 并设置挂载点
- Bootstrap中的段落和强调内容
- 数组中出现次数超过一半的数字
- 谷歌重返中国:已在华注册“壳公司”
- session和cookie原理
- 关于margin重合的几种解决办法
- java异常处理
- IT为什么需要虚拟化
- 【转载】MFCC特征提取(C语言版本)
- CentOS安装配置redis
- 书
- GCC -E -Wall等编译参数
- Linux中的中断处理
- STM32F103命名规则
- 一个简单的Snappy Ubuntu python webserver
- 《将博客搬至CSDN》