题目来源:码蹄集
https://matiji.net/exam/brushquestion/184/778/B3FCFEC101BD05189BB74D522E019504
参考程序:
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
#include <cmath>
using namespace std;
#define N 1000
#define ll long long
int a[10] = {0,1 ,1, 2, 2} , b[10] = {0,1,2,1,2};
int main(){
int x[10] ,y[10] ;
for (int i = 1; i <= 4; i++){
cin >> x[i] >> y[i] ;
}
if (x[1] == x[4] && y[1] == x[4] || x[2] == x[3] && y[2] == y[3]
|| x[1] == x[4] && y[2] == y[3] || x[2] == x[3] && y[1] == y[4]){ // 相切
cout << "NO"; return 0;
}
if (x[3] >= x[1] && x[4] >= x[1] && x[3] <= x[2] && x[4] <= x[2] &&
y[4] <= y[1] && y[4] <= y[2] && y[1] <= y[3] && y[2] <= y[3] ||
x[1] >= x[3] && x[2] >= x[3] && x[1] <= x[4] && x[2] <= x[4] &&
y[2] <= y[3] && y[2] <= y[4] && y[3] <= y[1] && y[4] <= y[1]){
cout <<"YES" ; return 0 ;
}
int a1 = 0 , b1 = 0;
for (int i = 1; i <= 4; i++){
if (x[a[i]] >= x[3] && x[a[i]] <= x[4] && y[a[i]] <= y[3]
&& y[a[i]] >= y[4]){
a1++;
}
}
for (int i = 1; i <= 4; i++){
if (x[a[i] + 2] >= x[1] && x[a[i] + 2] <= x[2] && y[a[i] + 2] <= y[1]
&& y[a[i] + 2 ] >= y[2])
b1++;
}
//cout <<a1 <<" " << b1 <<endl;
if ( a1 == 0 && b1 == 0 ||a1 == 0 && b1 == 4 || a1 == 4 && b1 == 0
|| a1 == 4 && b1 == 4){
cout <<"NO" ;
}
else cout <<"YES" ;
return 0;
}
/*
-20 10 20 -5
-10 20 10 -10
*/