//自定义优先队列
#include <iostream>
#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
const int maxn=10000+5;
struct node{
int money,num,sec; //钱数 红包个数 编号
node(int money,int num,int sec):money(money),num(num),sec(sec) {}
friend bool operator <(node n1,node n2)
{
if(n1.money!=n2.money) return n1.money<n2.money;
else if(n1.num!=n2.num) return n1.num<n2.num;
else return n1.sec>n2.sec;
}
};
int a[maxn],b[maxn]; //钱数,个数,编号
int main()
{
int n;
scanf("%d",&n);
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
priority_queue<node>pq;
while(!pq.empty()) pq.pop();
for(int i=1;i<=n;i++)
{
int k;
scanf("%d",&k);
int cnt=0;
for(int i=0;i<k;i++)
{
int v,m;
scanf("%d%d",&v,&m);
cnt+=m;
a[v]+=m;
b[v]++;
}
a[i]-=cnt;
}
for(int i=1;i<=n;i++)
{
pq.push(node(a[i],b[i],i));
}
while(!pq.empty())
{
node s=pq.top();
pq.pop();
printf("%d %.2f\n",s.sec,(double)s.money/100);
}
return 0;
}
GPLT L2-009 抢红包 自定义优先队列
最新推荐文章于 2024-05-10 00:36:18 发布