Polycarp has recently got himself a new job. He now earns so much that his old wallet can't even store all the money he has.

Berland bills somehow come in lots of different sizes. However, all of them are shaped as rectangles (possibly squares). All wallets are also produced in form of rectangles (possibly squares).

A bill x×y fits into some wallet h×w if either x≤h and y≤w or y≤h and x≤w . Bills can overlap with each other in a wallet and an infinite amount of bills can fit into a wallet. That implies that all the bills Polycarp currently have fit into a wallet if every single one of them fits into it independently of the others.

Now you are asked to perform the queries of two types:

  1. + x y — Polycarp earns a bill of size x×y ;
  2. ? h w — Polycarp wants to check if all the bills he has earned to this moment fit into a wallet of size h×w .

It is guaranteed that there is at least one query of type 1 before the first query of type 2 and that there is at least one query of type 2 in the input data.

For each query of type 2 print "YES" if all the bills he has earned to this moment fit into a wallet of given size. Print "NO" otherwise.

Input

The first line contains a single integer n (2≤n≤5⋅105 ) — the number of queries.

Each of the next n lines contains a query of one of these two types:

  1. + x y (1≤x,y≤109 ) — Polycarp earns a bill of size x×y ;
  2. ? h w (1≤h,w≤109 ) — Polycarp wants to check if all the bills he has earned to this moment fit into a wallet of size h×w .

It is guaranteed that there is at least one query of type 1 before the first query of type 2 and that there is at least one query of type 2 in the input data.

Output

For each query of type 2 print "YES" if all the bills he has earned to this moment fit into a wallet of given size. Print "NO" otherwise.

Example

Input
9
+ 3 2
+ 2 3
? 1 20
? 3 3
? 2 3
+ 1 5
? 10 10
? 1 5
+ 1 1
Output
NO
YES
YES
YES
NO

Note

The queries of type 2 of the example:

  1. Neither bill fits;
  2. Both bills fit (just checking that you got that bills can overlap);
  3. Both bills fit (both bills are actually the same);
  4. All bills fit (too much of free space in a wallet is not a problem);
  5. Only bill 1×5 fit (all the others don't, thus it's "NO").

题目大意:

+ 代表给你的money,再给你两个数字,代表长和宽,?代表钱包,问你在出现?前面所有的Money是不是可以装进钱包,可以输出YES,否则输出NO

思路:先对输入数字进行处理,a,b, 输入之后,进行处理,a<b.

出现?,进行查找,很容易可以发现,这里的a一定要比前面所有的a中最大的一个还要大,这里的b同理

否则就装不下所有的。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <algorithm>
#include <vector>
using namespace std;
const int maxn=2e5+10; int main()
{
int n,maxx=0,maxy=0;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
int a,b;
char c[10];
scanf("%s",c);
scanf("%d%d",&a,&b);
if(a>b) swap(a,b);
if(c[0]=='+')
{
maxx=max(maxx,a);
maxy=max(maxy,b);
}
if(c[0]=='?')
{
if(a>=maxx&&b>=maxy) printf("YES\n");
else printf("NO\n");
}
}
return 0;
}

  

贪心 C - Polycarp's New Job的更多相关文章

  1. Codeforces Round #375 (Div. 2) C. Polycarp at the Radio 贪心

    C. Polycarp at the Radio time limit per test 2 seconds memory limit per test 256 megabytes input sta ...

  2. CF 1006B Polycarp's Practice【贪心】

    Polycarp is practicing his problem solving skill. He has a list of n problems with difficulties a1,a ...

  3. CodeForces 1005D Polycarp and Div 3(思维、贪心、dp)

    http://codeforces.com/problemset/problem/1005/D  题意: 给一个仅包含数字的字符串,将字符串分割成多个片段(无前导0),求这些片段里最多有多少是3的倍数 ...

  4. 【Codeforces 723C】Polycarp at the Radio 贪心

    n个数,用最少的次数来改变数字,使得1到m出现的次数的最小值最大.输出最小值和改变次数以及改变后的数组. 最小值最大一定是n/m,然后把可以改变的位置上的数变为需要的数. http://codefor ...

  5. Codeforces Round #375 (Div. 2) Polycarp at the Radio 优先队列模拟题 + 贪心

    http://codeforces.com/contest/723/problem/C 题目是给出一个序列 a[i]表示第i个歌曲是第a[i]个人演唱,现在选出前m个人,记b[j]表示第j个人演唱歌曲 ...

  6. cf723c Polycarp at the Radio

    Polycarp is a music editor at the radio station. He received a playlist for tomorrow, that can be re ...

  7. codeforces 723C : Polycarp at the Radio

    Description Polycarp is a music editor at the radio station. He received a playlist for tomorrow, th ...

  8. Codeforces Round #375 (Div. 2) A B C 水 模拟 贪心

    A. The New Year: Meeting Friends time limit per test 1 second memory limit per test 256 megabytes in ...

  9. CF Covered Path (贪心)

    Covered Path time limit per test 1 second memory limit per test 256 megabytes input standard input o ...

随机推荐

  1. Tree View控件(添加,移除,设置图标)

    添加 父节点,并为父节点添加子节点 private void button1_Click(object sender, EventArgs e) { TreeNode tn1 = treeView1. ...

  2. 安装PyCharm

    安装包下载 本文以CentOS上PyCharm安装为例来介绍,安装包的下载地址:https://www.jetbrains.com/pycharm/download/ 官网提供了windows,mac ...

  3. cf55D. Beautiful numbers(数位dp)

    题意 题目链接 Sol 看到这种题就不难想到是数位dp了. 一个很显然的性质是一个数若能整除所有位数上的数,则一定能整除他们的lcm. 根据这个条件我们不难看出我们只需要记录每个数对所有数的lcm(也 ...

  4. 【代码笔记】Web-JavaScript-JavaScript调试

    一,效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  5. maven 术语

    1, 中央仓库 是一个网络仓库, 用于存储各种 jar 和 maven 插件, 官方网站显示的是列表, 不友好, 一般搜索依赖到一个三方地址: https://mvnrepository.com/ 2 ...

  6. neutron是一个超级脚本的理解

    1.neutron 是由python写成,表面看有很多的字符串.逻辑处理,除去访问数据库.发送消息队列这些中间件的API调用外,其他部分大部分都在组装成一个shell命令. 并最终调用subproce ...

  7. Android tabLayout+recyclerView实现锚点定位

    原文链接:https://mp.weixin.qq.com/s/L3o2i3WTmg1ScXEYDS8YCg 在上一篇文章 Android 实现锚点定位中,我们介绍了tablayout+scrollV ...

  8. Python 标准类库-数据类型之copy-深拷贝浅拷贝操作

    标准类库-数据类型之copy-深拷贝浅拷贝操作   by:授客 QQ:1033553122 Python中赋值并不会拷贝对象,只是创建目标和对象的绑定关系. copy.copy(x) 返回x的浅拷贝 ...

  9. Android 程序崩溃之后fragment出现画面重叠问题

    1.解决方法: 直接在包含Fragment的Activity中复写onSaveInstanceState()方法,使其空实现 @Override protected void onSaveInstan ...

  10. 浅谈Kotlin(一):简介及Android Studio中配置

    浅谈Kotlin(一):简介及Android Studio中配置 浅谈Kotlin(二):基本类型.基本语法.代码风格 浅谈Kotlin(三):类 浅谈Kotlin(四):控制流 前言: 今日新闻:谷 ...