Problem:
 Score : 300 points    Problem Statement 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 (x_i,y_i) at time t_i .  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  ≤  10^5  0  ≤  x_i  ≤  10^5  0  ≤  y_i  ≤  10^5  1  ≤  t_i  ≤  10^5  t_i  <  t_{i+1} ( 1  ≤  i  ≤  N-1 )  All input values are integers.         Input Input is given from Standard Input in the following format:  N  t_1  x_1  y_1  t_2  x_2  y_2  :  t_N  x_N  y_N       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

Solution (Python):
def main():
    N = int(input())
    txy = [list(map(int, input().split())) for i in range(N)]

    ok = True
    pt, px, py = 0, 0, 0
    for i in range(N):
        t, x, y = txy[i]
        dt = t - pt
        dxy = abs(px - x) + abs(py - y)
        if dt < dxy:
            ok = False
            break
        elif dt&1 != dxy&1:
            ok = False
            break
        pt, px, py = t, x, y
    
    if ok:
        print("Yes")
    else:
        print("No")


if __name__ == "__main__":
    main()

Solution (Python):


current_time = 0
current_state = (0, 0)

n = int(input())
for i in range(n):
    t, x, y = map(int, input().split())

    
    distance = abs(current_state[0] - x) + abs(current_state[1] - y)
    time_gap = t - current_time
    if time_gap < distance:
        print("No")  
        exit()

    
    
    
    if time_gap % 2 == 0:
        if not (distance % 2 == 0):
            print("No")
            exit()
    else:
        if distance % 2 == 0:
            print("No")
            exit()

    current_time = t
    current_state = (x, y)

print("Yes")

Solution (Python):
N = int(input())
All = [list(map(int, input().split())) for _ in range(N)]
pre_x = 0
pre_y = 0
pre_t = 0

can = True
for n in range(N):
    can2 = False
    T = All[n][0] - pre_t
    d = abs(All[n][1] - pre_x) + abs(All[n][2] - pre_y)
    
    if d <= T and T % 2 ==  d % 2:
        can2 = True

    if can2 == False:
        can = False
        break

    pre_t = All[n][0]
    pre_x = All[n][1]
    pre_y = All[n][2]

if can == True:
    print("Yes")
else:
    print("No")

Solution (Python):
N = int(input())
All = [list(map(int, input().split())) for _ in range(N)]
t = [row[0] for row in All]
x = [row[1] for row in All]
y = [row[2] for row in All]
pre_x = 0
pre_y = 0
pre_t = 0

can = True
for n in range(N):
    can2 = False
    T  = abs(t[n] - pre_t)
    dx = abs(x[n] - pre_x)
    dy = abs(y[n] - pre_y)
    
    if dx + dy == 0 and T % 2 == 0:
        can2 = True
        
    elif dx + dy == 0 and T % 2 != 0:
        can2 = False
        
        break

    if (T % (dx + dy)) == 0:
        can2 = True
        

    if can2 == False:
        can = False
        
        break

    pre_t = t[n]
    pre_x = x[n]
    pre_y = y[n]

if can == True:
    print("Yes")
else:
    print("No")

Solution (Python):


N = int(input())
after = [0, 0, 0]
flag = True
for i in range(N):
    before = after
    after = list(map(int, input().split()))
    if after[0] - before[0] < abs(after[1] - before[1]) + abs(after[2] - before[2]) or (
            after[0] - before[0] + abs(after[1] - before[1]) + abs(after[2] - before[2])) % 2 == 1:
        print("No")
        flag = False
        break
    else:
        continue
if flag:
    print("Yes")

Solution (Python):
n=int(input())
k=["t","x","y"]
c=[dict(zip(k,[0,0,0]))]
ans="Yes"
for i in range(1,n+1):
    c.append(dict(zip(k,list(map(int, input().split())))))

    if ((c[i]["x"]+c[i]["y"])%2==0) != (c[i]["t"]%2==0):
        ans="No"

    if abs(c[i]["x"]-c[i-1]["x"])+abs(c[i]["y"]-c[i-1]["y"]) > (c[i]["t"]-c[i-1]["t"]):
        ans="No"

print(ans)

Solution (Python):
n = int(input())
a = []
for _ in range(n):
  a.append(list(map(int,input().split())))

target = [0, 0, 0]
for i in range(n):
  target = [a[i][0] - target[0], a[i][1] - target[1], a[i][2] - target[2]]
  if target[0] % 2 == (target[1] + target[2]) % 2 and target[0] >= (target[1] + target[2]):
    continue
  else:
    print('No')
    exit()

print('Yes')

Solution (Python):
s=p=q=0
for i in range(int(input())):
 t,x,y=map(int,input().split())
 l=abs(x-p)+abs(y-q)
 if(l-t-s)%2or l>t-s:print("No");break
 s,p,q=t,x,y
else:print("Yes")

Solution (Python):
n = int(input())
points = [map(int, input().split()) for _ in range(n)]

for t, x, y in points:
    dt = t
    dist = x + y
    if dt < dist or dt % 2 != dist % 2:
        print('No')
        break
else:
    print('Yes')

Solution (Python):
from sys import exit
n = int(input())
data = [list(map(int, input().split())) for _ in range(n)]
t = 0
x = 0
y = 0
for d in data:
  duration = d[0] - t
  distance = abs(x - d[1]) + abs(y - d[2])
  if (distance > duration) or ((duration - distance) % 2 == 1):
    print('No')
    exit()
  t = d[0]
  x = d[1]
  y = d[2]
print('Yes')

Solution (Python):
N = int(input())
txy_init = [[0, 0, 0]]
txy = txy_init + [[int(i) for i in input().split(" ")] for i in range(N)]
t, x, y = 0, 1, 2

checker = True
for i in range(N):
    dt = txy[i+1][t] - txy[i][t]
    dxy = abs(txy[i+1][x] - txy[i][x]) + abs(txy[i+1][y] - txy[i][y])
    
    if dt < dxy:
        checker = False
    else:
        if (dt - dxy) % 2 == 0:
            continue
        else:
            checker = False
    
    if checker:
        continue
    else:
        break

if checker:
    print("Yes")
else:
    print("No")

Solution (Python):
n = int(input())

l = []
for i in range(n):
    l.append(input().split())

judge = 1

t = x = y = 0
for i in l:
    t = int(i[0]) - t
    x = abs(int(i[1]) - x)
    y = abs(int(i[2]) - y)
    d = x + y
    if (t < d):
        judge = 0
        break
    elif (t % 2 != d % 2):
        judge = 0
        break

if (judge == 1):
    print("Yes")
else:
    print("No")

Solution (Python):

import sys
import math
from collections import defaultdict


sys.setrecursionlimit(10**7)
def input():
    return sys.stdin.readline()[:-1]


mod = 10**9 + 7


def I(): return int(input())
def II(): return map(int, input().split())
def III(): return list(map(int, input().split()))
def Line(N):
    read_all = [tuple(map(int, input().split())) for _ in range(N)]
    return map(list,zip(*read_all))



N = I()
t,x,y = Line(N)

t0 = 0
x0 = 0
y0 = 0

for i in range(N):
    d = abs(x[i]-x0) + abs(y[i]-y0)
    a = t[i]-t0-d
    if a>=0 and a%2==0:
        t0 = t[i]
        x0 = x[i]
        y0 = y[i]
    else:
        print('No')
        exit()

print('Yes')

Solution (Python):
import subprocess
import gzip, base64, os
import stat

gz = b'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'
bin = gzip.decompress(base64.b64decode(gz))
p = os.path.dirname(__file__)
pymain = os.path.join(p, "a.out")
with open(pymain, "wb") as f:
    f.write(bin)
os.chmod(pymain, stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR)
if p == "":
    pymain = "./" + pymain
subprocess.call(pymain)



'''

def main2():
    stdin = open('/dev/stdin')
    N = int(stdin.readline())
    t0 = 0
    x0 = 0
    y0 = 0
    for _ in range(N):
        t1, x1, y1 = map(int, stdin.readline().split())
        t = t1 - t0
        r = abs(x1 - x0) + abs(y1 - y0)
        if t < r or t & 1 != r & 1:
            print('No')
            return
        t0 = t1
        x0 = x1
        y0 = y1
    print('Yes')
'''