1 条题解

  • 0
    @ 2024-8-2 16:19:45

    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
    上传者