#include <iostream>
#include <vector>
#include <algorithm>
#include <iomanip>

using namespace std;

struct Person {
    int id;
    double income;
    int grabCount;
};

bool compare(const Person& p1, const Person& p2) {
    if (p1.income != p2.income) {
        return p1.income > p2.income;
    } else if (p1.grabCount != p2.grabCount) {
        return p1.grabCount > p2.grabCount;
    } else {
        return p1.id < p2.id;
    }
}

int main() {
    int N;
    cin >> N;
    
    vector<Person> people(N);
    for (int i = 0; i < N; i++) {
        int K;
        cin >> K;
        people[i].id = i + 1;
        people[i].income = 0;
        people[i].grabCount = 0;
        
        for (int j = 0; j < K; j++) {
            int receiver;
            double amount;
            cin >> receiver >> amount;
            people[receiver - 1].income += amount;
            people[i].grabCount++;
        }
    }
    
    sort(people.begin(), people.end(), compare);
    
    for (const auto& person : people) {
        cout << person.id << " " << fixed << setprecision(2) << person.income / 100 << endl;
    }
    
    return 0;
}
``
编写一个C++代码没有人没抢过红包吧…… 这里给出N个人之间互相发红包、抢红包的记录请你统计一下他们抢红包的收获。输入格式:输入第一行给出一个正整数N≤10 4 即参与发红包和抢红包的总人数则这些人从1到N编号。随后N行第i行给出编号为i的人发红包的记录格式如下:KN 1 P 1 ⋯N K P K 其中K0≤K≤20是发出去的红包个数N i 是抢到红包的人的编号P i 0是其抢到的红包

原文地址: https://www.cveoy.top/t/topic/hAcU 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录