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: