9分求助
查看原帖
9分求助
1435980
lijunxian_0818_2楼主2024/11/8 12:58
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

// 对两个序列进行拼接、排序并更新
void sortAndUpdate(vector<vector<int>>& sequences, int x, int y) {
    vector<int> b;
    // 拼接两个序列
    for (int num : sequences[x - 1]) {
        b.push_back(num);
    }
    for (int num : sequences[y - 1]) {
        b.push_back(num);
    }

    // 对拼接后的序列进行升序排序
    sort(b.begin(), b.end());

    // 更新原序列
    sequences[x - 1].clear();
    sequences[y - 1].clear();
    for (int i = 0; i < b.size() / 2; ++i) {
        sequences[x - 1].push_back(b[i]);
    }
    for (int i = b.size() / 2; i < b.size(); ++i) {
        sequences[y - 1].push_back(b[i]);
    }
}

int main() {
    int n, m, q;
    cin >> n >> m >> q;

    // 存储m个长度为n的整数序列
    vector<vector<int>> sequences(m, vector<int>(n));

    // 读取初始序列
    for (int i = 0; i < m; ++i) {
        for (int j = 0; j < n; ++j) {
            cin >> sequences[i][j];
        }
    }

    // 处理q次操作
    for (int i = 0; i < q; ++i) {
        int op, x, y;
        cin >> op >> x >> y;

        if (op == 1) {
            sortAndUpdate(sequences, x, y);
        } else if (op == 2) {
            cout << sequences[x - 1][y - 1] << endl;
        }
    }

    return 0;
}
2024/11/8 12:58
加载中...