1 条题解
-
0
C++ :
#include <bits/stdc++.h> using namespace std; const int N = 2e4 + 10; struct node { int pos, val; } a[N]; int e[20]; int n, m; bool cmp(node n1, node n2) { return n1.val > n2.val || (n1.val == n2.val && n1.pos < n2.pos); } int main() { cin >> n >> m; // 每一类星球的额外加分 for (int i = 1; i <= 10; i++) { cin >> e[i]; } for (int i = 1; i <= n; i++) { cin >> a[i].val; a[i].pos = i; // 记录原始位置 } // 首次排序 sort(a + 1, a + n + 1, cmp); // 计算每个星球的分类,根据分类加上额外的加分 for (int i = 1; i <= n; i++) { int c = (i - 1) % 10 + 1; a[i].val += e[c]; } // 第2次排序 sort(a + 1, a + n + 1, cmp); // 输出结果:注意,要输出前 m 个数 for (int i = 1; i <= m; i++) { cout << a[i].pos << " "; } return 0; }
- 1
信息
- ID
- 1012
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 10
- 标签
- 递交数
- 2
- 已通过
- 2
- 上传者