#include <bits/stdc++.h>
#include <vector>
using namespace std;
int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr); 
    int n, m;
    cin >> n >> m;
    vector<int> A(n + 1);
    for (int i = 1; i <= n; ++i) {
        cin >> A[i];
    }
    vector<int> queries(m);
    for (int i = 0; i < m; ++i) {
        cin >> queries[i];
    }
    int current_q = 0;
    for (int i = 1; i < n && current_q < m; ++i) {
        int min_idx = i;
        for (int j = i + 1; j <= n; ++j) {
            if (A[j] < A[min_idx]) {
                min_idx = j;
            }
        }
        if (min_idx != i) {
            swap(A[i], A[min_idx]);
        }
        while (current_q < m && queries[current_q] == i) {
            for (int k = 1; k <= n; ++k) {
                cout << A[k] << " \n"[k == n];
            }
            current_q++;
        }
    }
    while (current_q < m) {
        for (int k = 1; k <= n; ++k) {
            cout << A[k] << " \n"[k == n];
        }
        current_q++;
    }
    return 0;
}

2 条评论

  • //选择排序加索引
    #include <bits/stdc++.h>
    using namespace std;
    int n, m;
    int a[100005];
    int idx[100005];
    int q[20];
    int main() {
    	cin >> n >> m;
    	for (int i = 1; i <= n; i++) {
    		cin >> a[i];
    		idx[a[i]] = i;
    	}
    	for (int i = 1; i <= m; i++) {
    		cin >> q[i];
    	}
    	int k = 1;
    	for (int i = 1; i < n; i++) {
    		int pos = idx[i];
    		swap(a[i], a[pos]);
    		idx[a[i]] = i;
    		idx[a[pos]] = pos;
    		if (q[k] == i) {
    			for (int j = 1; j <= n; j++) {
    				cout << a[j] << " ";
    			}
    			cout << endl;
    			k++;
    		}
    		if (k > m) {
    			break;
    		}
    	}
    	return 0;
    }
    
    
    • @ 2026-7-19 10:20:25

      豆包生成的吧

      • 1

      信息

      ID
      1721
      时间
      ms
      内存
      MiB
      难度
      2
      标签
      递交数
      398
      已通过
      97
      上传者