AtCoDeer the deer is going on a trip in a two-dimensional plane. In his plan, he will depart from point (0,0) at time 0, then for each i between 1 and N (inclusive), he will visit point (xi,yi) at time ti.
If AtCoDeer is at point (x,y) at time t, he can be at one of the following points at time t+1: (x+1,y), (x−1,y), (x,y+1) and (x,y−1). Note that he cannot stay at his place. Determine whether he can carry out his plan.
Constraints
1 ≤ N ≤ 105
0 ≤ xi ≤ 105
0 ≤ yi ≤ 105
1 ≤ ti ≤ 105
ti < ti+1 (1 ≤ i ≤ N−1)
All input values are integers.
Input
Input is given from Standard Input in the following format:
N
t1 x1 y1
t2 x2 y2
:
tN xN yN
Output
If AtCoDeer can carry out his plan, print Yes; if he cannot, print No.
Sample Input 1
2
3 1 2
6 1 1
Sample Output 1
Yes
For example, he can travel as follows: (0,0), (0,1), (1,1), (1,2), (1,1), (1,0), then (1,1).
Sample Input 2
1
2 100 100
Sample Output 2
No
It is impossible to be at (100,100) two seconds after being at (0,0).
Sample Input 3
2
5 1 1
100 1 1
Sample Output 3
No
解题思路:如果前一个点到该点的距离刚好等于需要花费的时间则可以到达。同时如果实际时间小于给定时间,那么如果给定时间减去实际时间后的数是偶数则可以到达如果是奇数则不可到达。
#include
using namespace std;
int main() {
int num,t=0,x=0,y=0,flag=0;
cin>>num;
while(num--) {
int tmpt,tmpx,tmpy;
cin>>tmpt>>tmpx>>tmpy;
if(abs(tmpx-x)+abs(tmpy-y)>abs(tmpt-t)||(abs(tmpt-t)-abs(tmpx-x)-abs(tmpy-y))%2)
flag = 1;
t =tmpt;
x = tmpx;
y = tmpy;
}
flag==1?cout<<"No"<cout<<"Yes"<return 0;
}