CF459A Pashmak and Garden


题目转送门

思路:

因为花园的形状是正方形,所以分四种情况讨论( Y 代表当前坐标上有树, N 代表没有)。

1:两个横坐标相等( $x_1=x_2$ ):

Y Y
N N

或者:

N N
Y Y

2:两个纵坐标相等( $y_1=y_2$ ):

Y N
Y N

或者:

N Y
N Y

3:对角线( $|x_1-x_2|=|y_1-y_2|$ ):

Y N
N Y

或者:

N Y
Y N

4:以上情况都不是,输出“ $-1$ ”

理完了思路,就来看代码吧!

AC CODE:

#include<bits/stdc++.h>
using namespace std;
int main(){
	int x[3],y[3];//定义 
	cin>>x[1]>>y[1]>>x[2]>>y[2];//输入 
	if(x[1]==x[2])cout<<x[1]+abs(y[1]-y[2])<<" "<<y[1]<<" "<<x[2]+abs(y[1]-y[2])<<" "<<y[2]<<endl;//第一种情况(横坐标相等) 
	else if(y[1]==y[2])cout<<x[1]<<" "<<y[1]+abs(x[1]-x[2])<<" "<<x[2]<<" "<<y[2]+abs(x[1]-x[2])<<endl;//第二种情况(纵坐标相等) 
	else if(abs(x[1]-x[2])==abs(y[1]-y[2])) cout<<x[1]<<" "<<y[2]<<" "<<x[2]<<" "<<y[1]<<endl;//第三种情况(对角线) 
	else cout<<"-1"<<endl;//第四种情况(啥都不是) 
	return 0;//完美结束 
}

文章作者: alex_liu
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 alex_liu !
  目录