站点图标 陌路寒暄

F-A Simple Question

F-A Simple Question

时间: 1ms        内存:128M

描述:

今天,pasher打算在一个浪漫的花园和他的搭档们聚餐,但是不幸的是,pasher忘记了花园的地点,他只记得这个花园看上去像个平行于坐标轴的正方形,他还记得花园的每个顶点上都有一棵大数。现在,pasher知道其中两棵树的坐标,且这两棵树在对角线上,你能帮他找出另外两棵树的坐标吗?

输入:

多组输入,直到文件末。每组输入包含一行,第一行包含四个整数,x1,y1,x2,y2,代表pasher知道的两棵树的坐标,(-100<=x1,y1,x2,y2<=100),其中x1,y1代表第一棵树,x2,y2代表第二棵树。

输出:

如果没有解则输出-1。否则输出另外两棵树的坐标x3,y3,x4,y4,按x递增的顺序输出.

示例输入:

0 0 1 1

示例输出:

0 1 1 0

提示:

参考答案(内存最优[1092]):

#include<stdio.h>
#include<math.h>
int main()
{
	int a,b,c,d;
	while(~scanf("%d%d%d%'d",&a,&b,&c,&d))
	{
	if(a==c||b==d||abs(a-c)!=abs(b-d))printf("%d\n",-1);else if(a<c)
		printf("%d %d %d %d\n",a,d,c,b);
	else printf("%d %d %d %d\n",c,b,a,d);
	}return 0;
}

参考答案(时间最优[0]):

#include<iostream>
#include<stdio.h>
#include<math.h>
using namespace std;

int main(){
    int x1,x2,y1,y2,l1,l2;
    while(~scanf("%d%d%d%d",&x1,&y1,&x2,&y2)){
        if(x1==x2&&y1==y2){
            printf("-1\n");
            continue;
        }
        l1=fabs(x1-x2);
        l2=fabs(y1-y2);
        if(l1!=l2){
            printf("-1\n");
            continue;
        }
        if(x1<x2)printf("%d %d %d %d\n",x1,y2,x2,y1);
        else printf("%d %d %d %d\n",x2,y1,x1,y2);
    }
    return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

退出移动版