回答編集履歴

5

コードの変更

2021/09/29 10:18

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -30,9 +30,9 @@
30
30
 
31
31
  {
32
32
 
33
- int dt = t - t_old, dist = abs(x - x_old) + abs(y - y_old);
33
+ int d = (t - t_old) - (abs(x - x_old) + abs(y - y_old));
34
34
 
35
- return (dt < dist) ? 1 : (dt + dist) & 1;
35
+ return d < 0 ? 1 : d & 1;
36
36
 
37
37
  }
38
38
 

4

追記

2021/09/29 10:18

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -15,3 +15,25 @@
15
15
  4 2 2
16
16
 
17
17
  5 0 3
18
+
19
+
20
+
21
+ **追記**
22
+
23
+ いつのまにか解決済みになっていますが、どうやって解決したのかが書かれていません。
24
+
25
+ こんなやり方もあります。
26
+
27
+ ```C
28
+
29
+ int travel(int t_old, int x_old, int y_old, int t, int x, int y)
30
+
31
+ {
32
+
33
+ int dt = t - t_old, dist = abs(x - x_old) + abs(y - y_old);
34
+
35
+ return (dt < dist) ? 1 : (dt + dist) & 1;
36
+
37
+ }
38
+
39
+ ```

3

説明の修正

2021/09/29 10:13

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -3,3 +3,15 @@
3
3
  `(x-x_old+y-y_old)` が負の奇数の場合、2 で割った余りは 1 になりません。
4
4
 
5
5
  `==1` を `!=0` にしてみてください。
6
+
7
+
8
+
9
+ それから、`if(abs(x-x_old+y-y_old)<=t-t_old)` という判定も間違っています。
10
+
11
+ 次の入力を考えてみてください。
12
+
13
+ 2
14
+
15
+ 4 2 2
16
+
17
+ 5 0 3

2

間違った説明の削除

2021/09/23 15:04

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -3,15 +3,3 @@
3
3
  `(x-x_old+y-y_old)` が負の奇数の場合、2 で割った余りは 1 になりません。
4
4
 
5
5
  `==1` を `!=0` にしてみてください。
6
-
7
-
8
-
9
- それから、`if(abs(x-x_old+y-y_old)<=t-t_old)` という判定も間違っています。
10
-
11
- 次の入力を考えてみてください。
12
-
13
- 2
14
-
15
- 4 2 2
16
-
17
- 6 0 4

1

説明の追加

2021/09/23 14:59

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -3,3 +3,15 @@
3
3
  `(x-x_old+y-y_old)` が負の奇数の場合、2 で割った余りは 1 になりません。
4
4
 
5
5
  `==1` を `!=0` にしてみてください。
6
+
7
+
8
+
9
+ それから、`if(abs(x-x_old+y-y_old)<=t-t_old)` という判定も間違っています。
10
+
11
+ 次の入力を考えてみてください。
12
+
13
+ 2
14
+
15
+ 4 2 2
16
+
17
+ 6 0 4