前提・実現したいこと
https://atcoder.jp/contests/abs/tasks/arc089_a
の問題で、自分ではできた!と思ったのですが出力結果が予想と違ってしまい、コードのどこが間違っているのかわかりません。
一番初めの実行結果がYes、となるはずなのですが、Noとなってしまいます
問題文
シカのAtCoDeerくんは二次元平面上で旅行をしようとしています。 AtCoDeerくんの旅行プランでは、時刻 0 に 点 (0,0) を出発し、 1 以上 N 以下の各 i に対し、時刻 tiに 点 (xi,yi) を訪れる予定です。
AtCoDeerくんが時刻 t に 点 (x,y) にいる時、 時刻 t+1 には 点 (x+1,y), (x−1,y), (x,y+1), (x,y−1) のうちいずれかに存在することができます。 その場にとどまることは出来ないことに注意してください。 AtCoDeerくんの旅行プランが実行可能かどうか判定してください。
制約
1 ≤ N ≤ 10^5
0 ≤ xi ≤ 10^5
0 ≤ yi ≤ 10^5
1 ≤ ti ≤ 10^5
ti< ti+1(1 ≤ i ≤ N−1)
入力は全て整数
入力
入力は以下の形式で標準入力から与えられる。
N
t1 x1 y1
t2 x2 y2
:
tN xN yN
出力
旅行プランが実行可能ならYesを、不可能ならNoを出力してください。
入力例 1
2
3 1 2
6 1 1
出力例 1
Yes
例えば、(0,0), (0,1), (1,1), (1,2), (1,1), (1,0), (1,1) と移動すればよいです。
入力例 2
1
2 100 100
出力例 2
No
(0,0) にいる状態から 2 秒後に (100,100) にいるのは不可能です。
入力例 3
2
5 1 1
100 1 1
出力例 3
No
発生している問題・エラーメッセージ
oamke@DESKTOP-3PLG0UV ~/kyopuro/begineersselection $ gcc traveling.c oamke@DESKTOP-3PLG0UV ~/kyopuro/begineersselection $ ./a.exe 2 3 1 2 6 1 1 No oamke@DESKTOP-3PLG0UV ~/kyopuro/begineersselection $ ./a.exe 1 2 100 100 No oamke@DESKTOP-3PLG0UV ~/kyopuro/begineersselection $ ./a.exe 2 5 1 1 No
該当のソースコード
c
1#include <stdio.h> 2#include <stdlib.h> 3 4int travel(int t_old, int x_old, int y_old, int t, int x, int y){ 5 if((t-t_old)%2==0){ 6 if((x-x_old+y-y_old)%2==0){ 7 if(abs(x-x_old+y-y_old)<=t-t_old){return 0; 8 }else{return 1;} 9 }else{return 1;} 10 }else{ 11 if((x-x_old+y-y_old)%2==1){ 12 if(abs(x-x_old+y-y_old)<=t-t_old){return 0; 13 }else{return 1;} 14 }else{return 1;} 15 } 16} 17 18int main(){ 19 int i, n, t=0, t_old, x=0, x_old, y=0, y_old; 20 scanf("%d", &n); 21 for(i=0;i<n;i++){ 22 t_old=t; 23 x_old=x; 24 y_old=y; 25 scanf("%d %d %d", &t, &x, &y); 26 if(0!=travel(t_old, x_old, y_old, t, x, y)){ 27 printf("No"); 28 return 0; 29 } 30 } 31 printf("Yes"); 32 return 0; 33}
試したこと
入力でtの値を大きくしてみたり、x, yの偶奇を変えてみたのですが、いずれも次のようにNoと出力されてしまいました。
$ ./a.exe 2 3 1 2 7 1 1 No oamke@DESKTOP-3PLG0UV ~/kyopuro/begineersselection $ ./a.exe 2 3 1 2 100 1 1 No oamke@DESKTOP-3PLG0UV ~/kyopuro/begineersselection $ ./a.exe 2 3 1 2 6 1 0 No
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー