回答編集履歴
4
コードの改善 (search の呼び出しを 1つにまとめた)
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
```C
|
4
4
|
|
5
|
-
#include <stdio.h>
|
5
|
+
#include <stdio.h> // scanf, printf
|
6
6
|
|
7
7
|
|
8
8
|
|
@@ -36,7 +36,7 @@
|
|
36
36
|
|
37
37
|
v[0] = 0;
|
38
38
|
|
39
|
-
int
|
39
|
+
int q, c, x, n = 2;
|
40
40
|
|
41
41
|
scanf("%d%d", &v[1], &q);
|
42
42
|
|
@@ -44,30 +44,24 @@
|
|
44
44
|
|
45
45
|
scanf("%d%d", &c, &x);
|
46
46
|
|
47
|
+
int i = search(v, n, x);
|
48
|
+
|
47
49
|
if (c == 1) {
|
48
50
|
|
49
|
-
int i = search(v, n, x);
|
50
|
-
|
51
|
-
for (int j = n; j > i; j--) v[j] = v[j-1];
|
51
|
+
for (int j = n++; j > i; j--) v[j] = v[j-1];
|
52
52
|
|
53
53
|
v[i] = x;
|
54
54
|
|
55
|
-
n++;
|
56
|
-
|
57
55
|
}
|
58
56
|
|
59
|
-
else {
|
60
|
-
|
61
|
-
int i = search(v, n, x);
|
62
|
-
|
63
|
-
|
57
|
+
else printf("%d\n", v[i] - v[i-1]);
|
64
|
-
|
65
|
-
}
|
66
58
|
|
67
59
|
}
|
68
60
|
|
69
61
|
}
|
70
62
|
|
63
|
+
|
64
|
+
|
71
65
|
```
|
72
66
|
|
73
67
|
これのどこが分からないのかをコメントしてください。
|
3
不要なコードの削除
test
CHANGED
@@ -33,8 +33,6 @@
|
|
33
33
|
{
|
34
34
|
|
35
35
|
static int v[200002];
|
36
|
-
|
37
|
-
if (!v) return puts("out of memory");
|
38
36
|
|
39
37
|
v[0] = 0;
|
40
38
|
|
2
malloc をやめて、static に変更
test
CHANGED
@@ -3,8 +3,6 @@
|
|
3
3
|
```C
|
4
4
|
|
5
5
|
#include <stdio.h> // scanf, printf
|
6
|
-
|
7
|
-
#include <stdlib.h> // malloc, free
|
8
6
|
|
9
7
|
|
10
8
|
|
@@ -34,7 +32,7 @@
|
|
34
32
|
|
35
33
|
{
|
36
34
|
|
37
|
-
|
35
|
+
static int v[200002];
|
38
36
|
|
39
37
|
if (!v) return puts("out of memory");
|
40
38
|
|
@@ -70,8 +68,6 @@
|
|
70
68
|
|
71
69
|
}
|
72
70
|
|
73
|
-
free(v);
|
74
|
-
|
75
71
|
}
|
76
72
|
|
77
73
|
```
|
1
コードの修正
test
CHANGED
@@ -34,7 +34,7 @@
|
|
34
34
|
|
35
35
|
{
|
36
36
|
|
37
|
-
int *v = malloc(sizeof(int[
|
37
|
+
int *v = malloc(sizeof(int[200002]));
|
38
38
|
|
39
39
|
if (!v) return puts("out of memory");
|
40
40
|
|