回答編集履歴
2
文言修正
answer
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
```C++
|
2
2
|
a.erase(a.begin() + i - 1);
|
3
3
|
```
|
4
|
-
ここで`a.begin()`より前の要素を消去しようとしています。
|
4
|
+
ここで`a.begin()`より前の範囲外要素を消去しようとしています。
|
5
5
|
|
6
6
|
> また、解答例のvis[]とwhile{}の中で何故そのように書くのか、どういう仕組みなのかが理解できません。
|
7
7
|
|
1
解答例説明追加
answer
CHANGED
@@ -1,4 +1,13 @@
|
|
1
1
|
```C++
|
2
2
|
a.erase(a.begin() + i - 1);
|
3
3
|
```
|
4
|
-
ここで`a.begin()`より前の要素を消去しようとしています。
|
4
|
+
ここで`a.begin()`より前の要素を消去しようとしています。
|
5
|
+
|
6
|
+
> また、解答例のvis[]とwhile{}の中で何故そのように書くのか、どういう仕組みなのかが理解できません。
|
7
|
+
|
8
|
+
・`vis[]`は残っている人の席を`0`、抜けた人の席を`1`
|
9
|
+
・`count`は前回抜けた人の次からの残っている人がいたの席のカウント
|
10
|
+
・`rev`は残っている人数
|
11
|
+
`while{}`で残り1人になるまでループ。
|
12
|
+
`do{}while(vis[k]==1);`で抜けた人の席を読み飛ばし。
|
13
|
+
としているだけです。
|