A. Pashmak and Garden
题意:在坐标系内,给两个点,如果这两个点可以是一个平行于坐标轴的正方形的其中两个点,输出另外的两个点,否则输出-1。
思路:题目保证两个点不会重叠,那么分类x1==x2和y1==y2。如果都不相等,判断abs(x1-x2)和abs(y1-y2)是否相等。分类处理即可。
#include <iostream>
#include <stdio.h>
#include <cmath>
#include <algorithm>
#include <iomanip>
#include <cstdlib>
#include <string>
#include <memory.h>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <ctype.h>
#define INF 10000000
#define ll long long
#define min3(a,b,c) min(a,min(b,c))
#define max3(a,b,c) max(a,max(b,c))
#define MAXN 100010
using namespace std;
int main(){
int x1,y1,x2,y2;
while(cin>>x1>>y1>>x2>>y2){
if(x1==x2){
int t=abs(y1-y2);
cout<<x1+t<<" "<<y1<<" "<<x2+t<<" "<<y2<<endl;
}else if(y1==y2){
int t=abs(x1-x2);
cout<<x1<<" "<<y1+t<<" "<<x2<<" "<<y2+t<<endl;
}else{
int t1=abs(x1-x2);
int t2=abs(y1-y2);
if(t1!=t2){
cout<<"-1"<<endl;
}else{
int t;
if(x1>x2){
t=x2;x2=x1;x1=t;
t=y2;y2=y1;y1=t;
}
cout<<x1<<" "<<y2<<" "<<x2<<" "<<y1<<endl;
}
}
}
return 0;
}