编写一个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是其抢到的红包
#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;
}
``
原文地址: https://www.cveoy.top/t/topic/hAcU 著作权归作者所有。请勿转载和采集!