[AtCoder] ABC 142 C – Go to School

問題

方針

\( i \) 番目の生徒が教室に来た時の教室にいる生徒の人数が \( A_i \) なので、\( i \) 番目の生徒は \( A_i \) 番目に教室に来たことになります。よって、\( A_i \) について昇順に整列させ、対応する生徒の番号を出力します。

コード

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

struct Data {
  int A, v;
  Data(int A, int v) : A(A), v(v){}
  bool operator < (const Data &d) const {
    return A < d.A;
  }
};

int main() {
  int N;
  cin >> N;
  vector<Data> d;
  int A;
  for (int i = 0; i < N; i++) {
    cin >> A;
    d.push_back(Data(A, i + 1));
  }
  sort(d.begin(), d.end());
  for (int i = 0; i < N; i++) {
    if (i == N - 1) cout << d[i].v << "\n";
    else cout << d[i].v << " ";
  }
  return 0;
}