階段試合5-9お年玉を奪う

1734 ワード

5-9現金入り封筒(25点)
お年玉を奪ったことがない人はいないでしょう.NN人同士でお年玉を出したり、奪ったりした記録を示します.お年玉を奪った収穫を統計してください.
入力形式:
最初の行に入力すると、正の整数NN(le 10^4≦10 4)が与えられます.すなわち、お年玉を出すこととお年玉を奪うことに参加する人数の合計は、1からNN番号になります.次にNN行、ii行目はiiと番号付けされた人がお年玉を出す記録を与え、フォーマットは以下の通りである.
K\quad N_1\quad P_1\quad\cdots\quad N_K\quad P_KKN​1​​P​1​​⋯N​K​​P​K​​
そのうちKK(0le Kle 200≦K≦20)はお年玉の個数で、N_iN iはお年玉を奪った人の番号で、P_iP i(>0>0)は、現金入り封筒の金額(分割単位)です.注意:同じ人が出したお年玉については、一人当たり最大1回しか奪うことができず、繰り返し奪うことはできません.
出力フォーマット:
所得金額が高い順から低い順に各人の番号と所得金額(元単位で小数点以下2桁)を出力します.1人あたりの情報は1行で、2つの数字の間に1つのスペースがあります.収入金額が並んでいる場合は、現金入り封筒を奪った個数で出力を減らします.並列がある場合は、個人番号で出力を増やします.
サンプルを入力:
10
3 2 22 10 58 8 125
5 1 345 3 211 5 233 7 13 8 101
1 7 8800
2 1 1000 2 1000
2 4 250 10 320
6 5 11 9 22 8 33 7 44 10 55 4 2
1 3 8800
2 1 23 2 123
1 8 250
4 2 121 4 516 7 112 9 10

出力サンプル:
1 11.63
2 3.63
8 3.63
3 2.11
7 1.69
6 -1.67
9 -2.18
10 -3.26
5 -3.26
4 -12.32
#include 
#include 
using namespace std;
struct node
{
    double data;
    int id;
    int count;
} a[10005];
int cmd(struct node a,struct node b)//    
{
    if(a.data!=b.data)
        return a.data>b.data;//    
    else if(a.count!=b.count)
        return a.count>b.count;//       
    else if(a.id!=b.id)
        return a.id