其他分享
首页 > 其他分享> > 战争尾声

战争尾声

作者:互联网

题目
牛客网考题

“当攻占主城成功的信号弹与敌人的子弹同时射出,信号弹照亮了民众对于和平的渴望与对于未来美好生活的所有畅想,而子弹却击碎了她下去的信念与存在的全部意义。”

“烟花易冷,少佐的生命也是如此,在温暖的光辉中照亮了她那唯有死亡同行的路,而这温柔的光芒也在这满是硝烟的空气中迅速降温、下落,熄灭,直至落回冰冷坚硬的地面上。”

——前言(略过不影响答题)

战火纷飞了二十多年的大陆终于看到了和平的曙光,
在昂榭尔王国、阿斯特赖亚国等几个大国的牵头下,大陆上的所有国家决定握手言和,停战修养。
作为战争结束的标志,需要所有国家签订一个停战协议。
一份完整的停战协议已经由我们的自动手记人偶 薇尔莉特 起草好了,
现在需要各个国家同时在同一个地点签订该停战协议。
将整块大陆放在平面直角坐标系中,则大陆的西南角的坐标为 \text{ ( 1 , 1 ) } ( 1 , 1 ) ,东北角的坐标为\text{ ( 200 , 200 ) } ( 200 , 200 ) 。现将给出 \mathit{n}n 个国家的坐标,第 \mathit{i}i 个国家的坐标为 ( x_i , y_i )(x i,y i) ( 1 \leq i \leq n , 1 \leq x_i \leq 200 , 1 \leq y_i \leq 200,x_i\in Z,y_i\in Z)(1≤i≤n,1≤x i≤200,1≤y i≤200,x i∈Z,y i∈Z)为了和平签订停战协议,你现在需要在这片大陆上,找到一个点,保证该点到所有国家的距离都 “相等”。PS:答案坐标均为整数PS:相等:两段距离差值的绝对值小于 10^{-4}10 −4。如果大陆上找不到该点,请输出 War is cruel.

Input

第一行,一个正整数 \mathit{n}n ,表示有 \mathit{n}n 个国家将会签订停战协议
接下来 n 行,每行两个正整数,第 \mathit{i}i 行表示第 \mathit{i}i 个国家的坐标 ( x_i , y_i )(x i,y i ) ,以空格隔开。

Output

第一行,输出满足条件的点的坐标,以空格隔开如果满足条件的点不止一个,请优先输出横坐标 \mathit{x}x 较小的点,如果横坐标 \mathit{x}x 相等,优先输出纵坐标 \mathit{y}y 较小的点。如果满足条件的点不存在,请输出 War is cruel.
PS:答案坐标均为整数

Sample Input
2
1 2
2 1

Sample Output
1 1

Sample Input
5
3 1
2 3
3 5
4 4
6 5

Sample Output
War is cruel.

备注:
数据范围:
对于10%的数据 n = 2 n=2 。

对于40%的数据保证 n \leq 10 n≤10 。
对于80%的数据保证 n \leq 50 n≤50 。
对于100%的数据保证所有 2 \leq n \leq 200 , 1 \leq x_i \leq 200 , 1 \leq y_i \leq 200,x_i\in Z,y_i\in Z2≤n≤200,1≤x
i≤200,1≤y i≤200,x i∈Z,y i∈Z。另外,对于60%的数据保证有解。PS:答案坐标均为整数

##两点间距离公式|AB|=sqrt((x2-x1)2+(y2-y1)2)

代码

#include<bits/stdc++.h>
using namespace std;
int num[3][10005];//存储各国家的坐标(x,y) 
int ans=0,n=0;
double sum;
int maxn=1000000,minn=-1;
bool check(int a,int b)
{
	for(int i=0;i<n-1;i++)
	{//a的值等于i的值,b的值等于j的值 
		ans=(a-num[0][i])*(a-num[0][i])+(b-num[1][i])*(b-num[1][i]);
		if(ans!=(a-num[0][i+1])*(a-num[0][i+1])+(b-num[1][i+1])*(b-num[1][i+1]))
		{
			return 0;//不符合条件 
		}
		//maxn=max(maxn,ans);
		//minn=min(minn,ans);
	}
	   return 1;//符合条件	
}
int main()
{
	scanf("%d",&n);
	for(int i=0;i<n;i++)
	{
		scanf("%d%d",&num[0][i],&num[1][i]);
	}
	for(int i=1;i<=200;i++)
	{
		for(int j=1;j<=200;j++)
		{
			if(check(i,j)==1)
			{
				printf("%d %d\n",i,j);
				return 0;
			}
		}
	}
	printf("War is cruel.");
	return 0;
} 

该代码由李柯辰所写

标签:200,战争,leq,尾声,mathit,int,num,坐标
来源: https://blog.csdn.net/weixin_53900539/article/details/113444430