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;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。