代码简单,难的点在于读懂题目
帝国A和帝国B统治着一维世界,帝国A的首都位于X,帝国B的首都位于Y,−100≤X<Y≤100。帝国A的国王认为城市x1,x2,…,xN属于他的国家(这些城市不重复);帝国B的国王认为城市y1,y2,…,yM属于他的国家(这些城市不重复),−100≤xi,yi≤100,且xi不等于X,yi不等于Y。城市都位于整数点上,如果存在一个城市Z满足下面三个条件,帝国A和帝国B将达成和平协议,否则,两国将会发生战争。三个条件如下:
- X< Z ≤ Y
- x1,x2,…,xN < Z
- y1,y2,…,yM ≥ Z
输入格式:
第一行输入N,M,X,Y四个整数,接下来2行分别是N个xi和M个yi的值。整数值之间都用空格隔开。具体如下:
N M X Y
x1 x2 … xN
y1 y2 … yM
输出格式:
用首都表示国家,输出两国是否会爆发战争,具体格式请参见样例。
输入样例1:
3 2 10 20
8 15 13
16 22
结尾无空行
输出样例1:
10 and 20: No War
结尾无空行
输入样例2:
4 2 -48 -1
-20 -35 -91 -23
-22 66
结尾无空行
输出样例2:
-48 and -1: War
结尾无空行
输入样例3:
5 3 6 8
-10 3 1 5 -100
100 6 14
结尾无空行
输出样例3:
6 and 8: War
结尾无空行
代码如下:
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int a, b, c1, c2;
cin>> a>> b>> c1>> c2;
int cc1[a],cc2[b+1];
//c1为国家1首都, c2为国家2首都, cc1国家1包含的城市, cc2为国家2包含的城市
for(int i = 0; i < a; ++i )
{
cin>> cc1[i];
}
for(int i = 0; i < b; ++i )
{
cin>> cc2[i];
}
//存城市信息
int maxc1, minc2;
sort (cc1, cc1+a);
sort (cc2, cc2+b);
maxc1 = cc1[a-1];
minc2 = cc2[0]<c2? cc2[0]: c2;
//z找到国家1中数字最大的城市和国家2中数字最小的城市
if( maxc1<c2 && minc2>c1 && minc2 <= c2 && maxc1<minc2)
cout<<c1<<" and "<<c2<<": No War";
else
cout<<c1<<" and "<<c2<<": War";
return 0;
}