• zzulioj--1805-- SC和ta的游泳池(简单几何)


    1805: SC和ta的游泳池

    Time Limit: 1 Sec  Memory Limit: 128 MB
    Submit: 154  Solved: 43

    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

    2
    0 0  1 111 1

    Sample Output

    1-1

    HINT


    #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
    ");
    		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
    ",sum);
    			}
    			else
    				printf("-1
    ");
    		}
    		else
    			printf("%d
    ",judge(q[1],q[2],q[3]));
    	}
    	return 0;
    }


  • 相关阅读:
    Flutter 导航栏上添加搜索按钮
    tabController保活
    nav 选项卡
    flutter 毛玻璃
    [题解]CodeForces878 D
    [题解]CodeForces878C Tournament
    [题解]NOIP2012
    bzoj1070题解
    bzoj1061题解
    bzoj1059题解
  • 原文地址:https://www.cnblogs.com/playboy307/p/5273608.html
Copyright © 2020-2023  润新知