- 选择排序
bc
- @ 2025-6-8 18:00:01
#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; }
- 1
信息
- ID
- 1721
- 时间
- ms
- 内存
- MiB
- 难度
- 2
- 标签
- 递交数
- 398
- 已通过
- 97
- 上传者