题解 | 排名

排名

https://www.nowcoder.com/practice/f7c80167c5b04fd2ac4b6d7080a73f01

#include <iostream>
#include<bits/stdc++.h>
using namespace std;
struct student {
    string sno;
    vector<int>poi;
    int sum=0;
    int ispast = 0;
};
bool cmp(student& a, student& b) {
    if (a.sum > b.sum)return true;
    else if(a.sum==b.sum)
    {
        return a.sno<b.sno;
    }
    else return false;
}
int main() {
    int n, m, g;
    while (cin >> n >> m >> g)
    {
        int amount=0;
        vector<int>score;
        for (int i = 0; i < m; i++) {
            int q;
            cin >> q;
            score.push_back(q);
        }
        student student1[n];
        for (int i = 0; i < n; i++) {
            cin >> student1[i].sno;
            int l;
            cin>>l;
            for (int j = 0; j < l; j++) {
                int q;
                cin >> q;
                student1[i].poi.push_back(score[q-1]);
                student1[i].sum += score[q-1];
            }
            if (student1[i].sum >= g){
                student1[i].ispast = 1;
                amount++;
                }
        }
        sort(student1, student1 + n, cmp);
        cout<<amount<<endl;
        for (int i = 0; i < n; i++) {
            if (student1[i].ispast == 1) {
            
                cout << student1[i].sno << " " << student1[i].sum << endl;
            }

        }
        
    }
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

06-19 19:06
门头沟学院 Java
码农索隆:别去东软,真学不到东西,真事
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务