7 条题解

  • -2
    @ 2023-4-10 19:04:57

    C++

    Florance

    #include <bits/stdc++.h>
    using namespace std;
    
    struct Node{ //s是名字,w是分数,n是排名
        string s; int w; int n;
    } a[1001];
    
    bool cmp(Node a, Node b) {
        if(a.w != b.w) return a.w > b.w; //如果分数不同,按分数排名序
        else return a.s < b.s; //否则按名字排序
    }
    
    int main()
    {
        int n, m;
        cin >> n >> m;
        for(int i = 0; i < n; i++) {
            cin >> a[i].s >> a[i].w; //输入名字和分数
        }
        sort(a, a + n, cmp); //排序
        for(int i = 0; i < n; i++) { //处理同分时的排名
            if(i == 0) a[i].n = i + 1;
            else if(a[i].w == a[i - 1].w) a[i].n = a[i - 1].n;
            else a[i].n = i + 1;
            cout << a[i].n << ":" << a[i].s << endl; //输出
        }
        int ans = 0;
        for(int i = 0; i < n; i++) {
            if(a[i].n <= m) ans+=1; //统计可以拿奶茶的人数
        }
        cout << ans;
        return 0;
    }
    

    信息

    ID
    736
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    递交数
    603
    已通过
    177
    上传者