AcWing 1. 排序
原题链接
简单
作者:
Mamba_Chu
,
2021-04-22 19:30:57
,
所有人可见
,
阅读 298
排序
C++ 代码
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
struct node{
int num, total, cnt;
};
bool cmp(node a, node b)
{
if(a.total != b.total) return a.total > b.total;
else if(a.cnt != b.cnt) return a.cnt > b.cnt;
else return a.num < b.num;
}
int main()
{
int n, m, a, b;
cin >> n;
vector<node> v(n + 1); //初始不知道数组的大小 等输入之后再用vector定义长度 避免空间的浪费
for(int i = 1; i <= n; i ++)
{
v[i].num = i; //在输入的时候输入编号 与坐标对应
cin >> m;
for(int j = 0; j < m; j ++)
{
cin >> a >> b;
v[a].cnt ++; //记录抢红包的次数
v[a].total += b;
v[i].total -= b; //减去发红包的数额
}
}
sort(v.begin() + 1, v.end(), cmp);
for(int i = 1; i <= n; i ++)
{
double temp = (double)(v[i].total * 1.0 / 100);
printf("%d %.2f\n", v[i].num, temp);
}
return 0;
}