考虑这样一个事实:较小边与较小边比较,较大边与较大边比较一定最优
不然,较大边与较小边比较有可能不能塞入,较小边与较大边比较有可能浪费,不更优,或者说,后者能够塞入的前者一定能塞入,前者能塞入的后者不一定能塞入
考虑每次维护当前较小边的最大值和当前较大边的最大值即可
时间复杂度:O(n)
#include<bits/stdc++.h> using namespace std; int n, x, y, a, b; char c; int main (void) { scanf("%d",&n); for (; n; n--) { c=getchar(); scanf("%c%d%d",&c,&x,&y); if (x>y) swap(x,y); if (c=='+') { a=max(a,x); b=max(b,y); } else { if (a<=x&&b<=y) puts("YES"); else puts("NO"); } } return 0; }