Gildong owns a bulgogi restaurant. The restaurant has a lot of customers, so many of them like to make a reservation before visiting it.

Gildong tries so hard to satisfy the customers that he even memorized all customers' preferred temperature ranges! Looking through the reservation list, he wants to satisfy all customers by controlling the temperature of the restaurant.

The restaurant has an air conditioner that has 3 states: off, heating, and cooling. When it's off, the restaurant's temperature remains the same. When it's heating, the temperature increases by 1 in one minute. Lastly, when it's cooling, the temperature decreases by 1 in one minute. Gildong can change the state as many times as he wants, at any integer minutes. The air conditioner is off initially.

Each customer is characterized by three values: titi — the time (in minutes) when the ii -th customer visits the restaurant, lili — the lower bound of their preferred temperature range, and hihi — the upper bound of their preferred temperature range.

A customer is satisfied if the temperature is within the preferred range at the instant they visit the restaurant. Formally, the ii -th customer is satisfied if and only if the temperature is between lili and hihi (inclusive) in the titi -th minute.

Given the initial temperature, the list of reserved customers' visit times and their preferred temperature ranges, you're going to help him find if it's possible to satisfy all customers.

Input

Each test contains one or more test cases. The first line contains the number of test cases qq (1≤q≤5001≤q≤500 ). Description of the test cases follows.

The first line of each test case contains two integers nn and mm (1≤n≤1001≤n≤100 , −109≤m≤109−109≤m≤109 ), where nn is the number of reserved customers and mm is the initial temperature of the restaurant.

Next, nn lines follow. The ii -th line of them contains three integers titi , lili , and hihi (1≤ti≤1091≤ti≤109 , −109≤li≤hi≤109−109≤li≤hi≤109 ), where titi is the time when the ii -th customer visits, lili is the lower bound of their preferred temperature range, and hihi is the upper bound of their preferred temperature range. The preferred temperature ranges are inclusive.

The customers are given in non-decreasing order of their visit time, and the current time is 00 .

Output

For each test case, print "YES" if it is possible to satisfy all customers. Otherwise, print "NO".

You can print each letter in any case (upper or lower).

Example

Input
4
3 0
5 1 2
7 3 5
10 -1 0
2 12
5 7 10
10 16 20
3 -100
100 0 0
100 -50 50
200 100 100
1 100
99 -100 0
Output
YES
NO
YES
NO
大意就是一个餐馆有一台可以调温的空调,在某一时刻可以选择升温一度,不变或者降温一度,餐馆有一个初始温度m,同时有m个顾客,每个顾客i是满意的当且仅当ti时刻的温度在他的接受范围之内(由输入给出),问这个餐馆能否通过某种调温方式让每个顾客否满意。
可以这么想,先对顾客按进入时间排序,建立两个变量up和down存储当前可调至的最高温和最低温,初始时刻up=down=m。从上一时刻到当前时刻,先更新up为 up + ( ti - t i-1 ),更新down为 down - ( ti - t i-1 ),这说明更新后从上一时刻到这一时刻,餐馆可以将温度调到[down,up]区间的任何一个温度,然后判断当前时刻顾客的舒适温度区与[down,up]是否有交集,没有的话直接break,输出NO,如果能让所有人都满意的话输出YES。
比赛时匆忙写的代码比较丑,参考下意思就行。
#include <bits/stdc++.h>
using namespace std;
int n,m;
struct peo
{
int t;
int l;
int h;
}p[];
bool cmp(peo a,peo b)
{
return a.t<b.t;
}
int main()
{
int t;
cin>>t;
while(t--)
{
cin>>n>>m;
int i,j;
for(i=;i<=n;i++)
{
int x1,x2,x3;
scanf("%d%d%d",&x1,&x2,&x3);
p[i].t=x1;
p[i].l=x2;
p[i].h=x3;
}
sort(p+,p+n+,cmp);
bool flag=;
int up=m;
int down=m;
p[].t=;
for(i=;i<=n;i++)
{
up+=(p[i].t-p[i-].t);
down-=(p[i].t-p[i-].t);
if(p[i].l>up||p[i].h<down)
{
flag=;
break;
}
if(up<=p[i].h&&up>=p[i].l&&down<=p[i].l)
{
up=up;
down=p[i].l;
}
else if(up>=p[i].h&&down<=p[i].h&&down>=p[i].l)
{
up=p[i].h;
down=down;
}
else if(up>p[i].h&&down<p[i].l)
{
up=p[i].h;
down=p[i].l;
}
else if(up<p[i].h&&down>p[i].l)
{ }
cout<<up<<' '<<down<<endl;
}
if(flag==)
{
cout<<"NO"<<endl;
}
else
{
cout<<"YES"<<endl;
}
}
return ;
}

Codeforces Round #620 (Div. 2) C. Air Conditioner的更多相关文章

  1. Codeforces Round #620 (Div. 2)

    Codeforces Round #620 (Div. 2) A. Two Rabbits 题意 两只兔子相向而跳,一只一次跳距离a,另一只一次跳距离b,每次同时跳,问是否可能到同一位置 题解 每次跳 ...

  2. Codeforces Round #620 (Div. 2) A-F代码 (暂无记录题解)

    A. Two Rabbits (手速题) #include<bits/stdc++.h> using namespace std; typedef long long ll; int ma ...

  3. Codeforces Round #620 (Div. 2) 题解

    A. Two Rabbits 思路: 很明显,如果(y-x)%(a+b)==0的话ans=(y-x)/(a+b),否则就为-1 #include<iostream> #include< ...

  4. Codeforces Round #620 (Div. 2) A. Two Rabbits

    Being tired of participating in too many Codeforces rounds, Gildong decided to take some rest in a p ...

  5. Codeforces Round #620 (Div. 2)E LCA

    题:https://codeforces.com/contest/1304/problem/E 题意:给定一颗树,边权为1,m次询问,每次询问给定x,y,a,b,k,问能否在原树上添加x到y的边,a到 ...

  6. Codeforces Round #620 (Div. 2)D dilworld定理

    题:https://codeforces.com/contest/1304/problem/D 题意:给定长度为n-1的只含’>'和‘<’的字符串,让你构造出俩个排列,俩个排列相邻的数字之 ...

  7. Codeforces Round #620 (Div. 2) D

    构造一个排列,要求相邻之间的数满足给定的大小关系,然后构造出两个序列,一个序列是所有可能的序列中LIS最长的,一个所有可能的序列中LIS最短的 最短的构造方法:我们考虑所有单调递增的部分,可以发现要让 ...

  8. Codeforces Round #620 (Div. 2)E(LCA求树上两点最短距离)

    LCA求树上两点最短距离,如果a,b之间距离小于等于k并且奇偶性与k相同显然YES:或者可以从a先走到x再走到y再走到b,并且a,x之间距离加b,y之间距离+1小于等于k并且奇偶性与k相同也输出YES ...

  9. Codeforces Round #620 (Div. 2)D(LIS,构造)

    #define HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> using namespace std; ]; ]; int main(){ io ...

随机推荐

  1. 2019牛客多校第三场B Crazy Binary String 思维

    Crazy Binary String 思维 题意 给出01串,给出定义:一个串里面0和1的个数相同,求 满足定义的最长子序列和子串 分析 子序列好求,就是0 1个数,字串需要思考一下.实在没有思路可 ...

  2. awk从放弃到入门(3):awk变量

    一.变量概述 对于awk来说"变量"又分为"内置变量" 和 "自定义变量" , "输入分隔符FS"和"输出分隔 ...

  3. 事务:Transaction详解

    1.事务概念: 一组sql语句操作单元,组内所有SQL语句完成一个业务,如果整组成功:意味着全部SQL都实现:如果其中任何一个失败,意味着整个操作都失败.失败,意味着整个过程都是没有意义的.应该是数据 ...

  4. 每天进步一点点------Allegro 铺铜、内电层分割

    一.Allegro 铺铜 1.建议初学者内电层用正片,因为这样就不用考虑flash焊盘,这时候所有的过孔和通孔该连内电层的就连到内电层,不该连的就不连.而如果用负片,那么如果做焊盘的时候如果没有做fl ...

  5. 如何预测股票分析--自动ARIMA

    在上一篇中,我们发现knn和线性回归一样,表现的不是特别好,来看看时间序列的表现 时间序列预测法其实是一种回归预测方法,属于定量预测,其基本原理是;一方面承认事物发展的延续性,运用过去时间序列的数据进 ...

  6. 网站调用qq第三方登录

    1. 准备工作 (1) 接入QQ登录前,网站需首先进行申请,获得对应的appid与appkey,以保证后续流程中可正确对网站与用户进行验证与授权. ① 注册QQ互联开发者账号  网址  https:/ ...

  7. TXT文件也能挂木马

    什么?TXT文件也能挂马?是的!TXT文件不仅有挂马的危险,而且有时候可能非常的危险!不过,严格说来,应该给这个所谓的"TXT"文件加个引号,因为它们是看起来是TXT文件,实则是隐 ...

  8. 第二十八篇 玩转数据结构——堆(Heap)和有优先队列(Priority Queue)

          1.. 优先队列(Priority Queue) 优先队列与普通队列的区别:普通队列遵循先进先出的原则:优先队列的出队顺序与入队顺序无关,与优先级相关. 优先队列可以使用队列的接口,只是在 ...

  9. Common Subsequence Gym - 102307C 公共序列

    2019 ICPC Universidad Nacional de Colombia Programming Contest C D J   C. Common Subsequence 题意:给出长度 ...

  10. 安装mongo以及相关扩展

    背景:看到了一个nodejs的对mongo操作的课程,于是想学一下. * 1.于是打算先在自己的vps上安装一个mongodb:[ https://docs.mongodb.org/manual/tu ...