【よくわかる解説!】ABC342 B問題 〜人Pが前から何番目か?〜

ABC

解説動画はこちら!

コード

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define rep(i, n) for (int i = 0; i < (n); ++i)

// POINT: order[p] := 人pが前から何番目に並んでいるかを返す

int main() {
    int n;
    cin >> n;
    vector order(n);
    rep(i, n) {
        int p;
        cin >> p;
        p--;
        order[p] = i;
    }

    // for (int i = 0; i < n; i++) {
    //     cout << i << " " << order[i] << endl;
    // }
    int q; cin >> q;
    vector ans;
    rep(i, q) {
        int a, b;
        cin >> a >> b;
        a--;
        b--;
        if (order[a] < order[b]) {
            ans.push_back(a + 1);
        } else {
            ans.push_back(b + 1);
        }
    }

    for (auto e : ans) {
        cout << e << endl;
    }

    return 0;
}

コメント