ABC086 C - Traveling
備忘録
問題
回答
"use strict" function Main(input) { input = input.trim().split('\n'); const N = Number(input[0].trim()) const T = input.slice(-N); let ret = 'Yes'; for(let i=0; i<N; i++){ let arr = T[i].trim().split(' ').map(Number); let t = arr[0]; let x = arr[1]; let y = arr[2]; if(t%2 !== 0 && (x+y)%2 === 0){ ret = 'No'; } if(t%2 === 0 && (x+y)%2 !== 0){ ret = 'No'; } if((x+y) > t){ ret = 'No'; } } console.log(ret); } Main(require("fs").readFileSync("/dev/stdin", "utf8"));
考え方
時刻が1増えるごとにx
かy
が1増えるか、1減る。
そのため、旅行が成立する条件として下記の3つが存在する。
- 時刻(
t
)が奇数の時、(x+y)
は奇数であること - 時刻(
t
)が偶数の時、(x+y)
は偶数であること - 座標
(x, y)
の合計値が時刻(t
)を上回らないこと
以上の3条件をすべての座標で確認することが出来れば旅行成立。