Official
B - Call the ID Number Editorial by leaf1415
\(N\) 人それぞれがすでに番号を呼ばれたかどうかをブーリアン型配列等に記憶しながら、\(N\) 人の行動を人 \(1\) 、人 \(2\) 、\(\ldots\) 、 人 \(N\) の順に実際にシミュレーションするプログラムを書くことで本問題に正解できます。
以下に、C++ 言語による正解例を記載します。
#include <iostream>
using namespace std;
int n;
int a[200001];
bool b[200001];
int main(void)
{
cin >> n;
for(int i = 1; i <= n; i++) cin >> a[i];
for(int i = 1; i <= n; i++) if(!b[i]) b[a[i]] = true;
int k = 0;
for(int i = 1; i <= n; i++) if(!b[i]) k++;
cout << k << endl;
for(int i = 1; i <= n; i++) if(!b[i]) cout << i << " ";
cout << endl;
return 0;
}
posted:
last update: