有n个矩形,每一个可以旋转或者不旋转,那么经过一些调整能不能让这些矩形的长组成的序列没有递增子序列。
遍历除最开头的所有的矩形,首先用一个 k 记录下第一个矩形的长的最大值,判断之后的矩形的长的最小值是否大于当前前一个的 k值,如果大于说明不满足条件,NO,如果小于,则记录下当前矩形的长最大的那个满足小于k的值,重复以上操作。如果都满足,那么输出YES
#include <bits/stdc++.h>
using namespace std;
struct rec{
int w,h;
}rec[100005];
int main(){
int n,flag = 1;
cin >> n;
for (int i=0; i < n; i++)
cin >> rec[i].w >> rec[i].h;
int k = max(rec[0].w,rec[0].h);
for (int i=1; i<n; i++) {
int ma = max(rec[i].w, rec[i].h),mi = min(rec[i].w, rec[i].h);
if (mi > k) {
flag = 0; break;
}else{
k >= ma ? k = ma : k = mi;
}
}
if (flag) {
cout << "YES" << endl;
}else{
cout << "NO" << endl;
}
return 0;
}