回答編集履歴
4
コード修正
answer
CHANGED
@@ -14,15 +14,15 @@
|
|
14
14
|
```diff
|
15
15
|
int main(int argc, char* argv[]) {
|
16
16
|
struct agent a[N] = { 0 };
|
17
|
-
+ int last = N
|
17
|
+
+ int last = N;
|
18
18
|
//追跡店の初期分布,運動の内容など今回問題となっている箇所と関係ない部分は省略してあります.
|
19
19
|
for (int T = 1; T <= TIMELIMIT; ++T) {////打ち切り時間まで計算
|
20
20
|
- for (int i = 0; i < N; ++i) { //各エージェントの計算
|
21
|
-
+ for (int i = 0; i <
|
21
|
+
+ for (int i = 0; i < last; ++i) { //各エージェントの計算
|
22
22
|
if (a[i].category == 1) {
|
23
23
|
- a[i] = a.back();
|
24
24
|
- a.pop_back();//今回問題になっているのはここの2行です
|
25
|
-
+ a[i] = a[
|
25
|
+
+ a[i] = a[--last];
|
26
26
|
}
|
27
27
|
}
|
28
28
|
}
|
3
コード修正
answer
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
//追跡店の初期分布,運動の内容など今回問題となっている箇所と関係ない部分は省略してあります.
|
19
19
|
for (int T = 1; T <= TIMELIMIT; ++T) {////打ち切り時間まで計算
|
20
20
|
- for (int i = 0; i < N; ++i) { //各エージェントの計算
|
21
|
-
+ for (int i = 0; i < last; ++i) { //各エージェントの計算
|
21
|
+
+ for (int i = 0; i <= last; ++i) { //各エージェントの計算
|
22
22
|
if (a[i].category == 1) {
|
23
23
|
- a[i] = a.back();
|
24
24
|
- a.pop_back();//今回問題になっているのはここの2行です
|
2
コード追記
answer
CHANGED
@@ -7,4 +7,24 @@
|
|
7
7
|
```diff
|
8
8
|
- for (int i = 0; i < N; ++i) { //各エージェントの計算
|
9
9
|
+ for (int i = 0; i < a.size(); ++i) { //各エージェントの計算
|
10
|
+
```
|
11
|
+
|
12
|
+
---
|
13
|
+
末尾の要素を対象から外すだけなら、最終要素のインデックスを覚えておくだけでも良いと思いますが。
|
14
|
+
```diff
|
15
|
+
int main(int argc, char* argv[]) {
|
16
|
+
struct agent a[N] = { 0 };
|
17
|
+
+ int last = N - 1;
|
18
|
+
//追跡店の初期分布,運動の内容など今回問題となっている箇所と関係ない部分は省略してあります.
|
19
|
+
for (int T = 1; T <= TIMELIMIT; ++T) {////打ち切り時間まで計算
|
20
|
+
- for (int i = 0; i < N; ++i) { //各エージェントの計算
|
21
|
+
+ for (int i = 0; i < last; ++i) { //各エージェントの計算
|
22
|
+
if (a[i].category == 1) {
|
23
|
+
- a[i] = a.back();
|
24
|
+
- a.pop_back();//今回問題になっているのはここの2行です
|
25
|
+
+ a[i] = a[last--];
|
26
|
+
}
|
27
|
+
}
|
28
|
+
}
|
29
|
+
}
|
10
30
|
```
|
1
指摘追加
answer
CHANGED
@@ -1,5 +1,10 @@
|
|
1
|
-
`vector`を使用してください。
|
1
|
+
`back()`や`pop_back()`したいのであれば`vector`を使用してください。
|
2
2
|
```diff
|
3
3
|
- struct agent a[N] = { 0 };
|
4
4
|
+ std::vector<agent> a(N);
|
5
|
+
```
|
6
|
+
これだけでは`pop_back()`の後に範囲外アクセスが発生するので以下も修正してください。
|
7
|
+
```diff
|
8
|
+
- for (int i = 0; i < N; ++i) { //各エージェントの計算
|
9
|
+
+ for (int i = 0; i < a.size(); ++i) { //各エージェントの計算
|
5
10
|
```
|