Untitled

 avatar
unknown
c_cpp
5 months ago
1.3 kB
5
Indexable
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int tt, tc;

void solve() {
    int n, m, q;
    cin >> n >> m >> q;

    vector<pair<int, vector<int>>> rankings(m);
    for (auto& [u, V] : rankings) {
        cin >> u;
        V = vector<int>(n + 1);
        for (int i = 1; i <= n; i++) cin >> V[i];
        vector<int> inv(n + 1);
        for (int i = 1; i <= n; i++) inv[V[i]] = i;
        V = inv;
    }
    vector<int> pos(m);
    iota(pos.begin(), pos.end(), 0);
    sort(pos.begin(), pos.end(), [&](int i, int j) {
        return rankings[i].first < rankings[j].first;
    });

    vector<int> inv(m);
    for (int i = 0; i < m; i++) inv[pos[i]] = i;

    vector<int> ss(m);
    for (int i = 0; i < m; i++) ss[i] = rankings[pos[i]].first;

    while (q--) {
        int x, y, t;
        cin >> x >> y >> t;

        int idx = upper_bound(ss.begin(), ss.end(), t) - ss.begin() - 1;
        if (idx < 0) {
            cout << min(x, y) << "\n";
            continue;
        }

        int rank_idx = inv[idx];
        auto& V = rankings[rank_idx].second;
        int where_x = V[x];
        int where_y = V[y];

        cout << (where_x < where_y ? x : y) << "\n";
    }
}

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	tt = 1, tc = 1;
	// cin >> tt;
	while (tt--) {
		solve();
		tc++;
	}
}
Editor is loading...
Leave a Comment