Official

C - 逆順列/Inverse Permutation Editorial by leaf1415


ある \(K\) について、\(K\) が数列 \(P\) の何番目の要素かを調べるには、 \(P\) を先頭から順に \(P_1, P_2, \ldots, \) と調べていくことを、\(K\) に等しい要素が見つかるまで続ければ良いです。

\(P\) を先頭から順に走査するのにはプログラミング言語の標準的な機能である繰り返しの機能( for 文など)を、\(P\) のある要素が \(K\) と等しいかを判定するのにはプログラミング言語の標準的な機能である条件分岐( if 文など)の機能を用いれば良いです。

全ての \(K = 1, 2, \ldots, N\) について、上記の手順を行いそれぞれについての答えを出力すれば本問題に正解できます。

以下に、C++ 言語による本問題の正解例を記載します。

#include <iostream>
using namespace std;

int main(void)
{
  int n;
  int p[101];
  cin >> n;
  for(int i = 1; i <= n; i++) cin >> p[i];
  
  for(int i = 1; i <= n; i++){
    for(int j = 1; j <= n; j++){
      if(p[j] == i){
        cout << j << " ";
        break;
      }
    }
  }
  cout << endl;
  
  return 0;
}

posted:
last update: