每次都可以调温度,调高或者调低,所以到当前温度就会有一个区间。也就是每次都求出一个温度变化区间,然后与当前客人的温度区间求一个交集。当没有交集则说明无法满足。
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<vector>
#define P pair<int,int>
#define LL long long
using namespace std;
const int maxn=1e5+10;
struct node
{
LL t,L,r;
}a[maxn];
bool cmp(node a,node b)
{
return a.t < b.t;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
LL n,st;
scanf("%lld%lld",&n,&st);
for(int i=1;i<=n;i++)
{
scanf("%lld%lld%lld",&a[i].t,&a[i].L,&a[i].r);
}
sort(a+1,a+n+1,cmp);
LL L=st,r=st;
LL sum=0;
int flag=1;
for(int i=1;i<=n;i++)
{
L=L-(a[i].t-sum), r=r+(a[i].t-sum);
sum=a[i].t;
if(a[i].L>r || a[i].r<L)
{
flag=0;
break;
}
L=max(L,a[i].L),r=min(r,a[i].r);
}
if(flag)printf("YES\n");
else printf("NO\n");
}
return 0;
}