実況選手総合能力大勝負


ところでこの問題、タイトルの内容の吸引力は明らかにタイトルそのものより大きいですね...来たスクリーンショットで血が沸いたよ..本題に戻る.この問題はソートではなく、その数値より大きいものがあるたびに+1を使っています.最終的な数字はランキングであり、構造体の一部としてマークされ、出力しやすい.ところで、テーマはちょっと長いです...
タイトルの説明
皆さんも実况のサッカーを闻いたことがあるでしょう.もしこれが闻いたことがないならば、皆さんは中国のサッカーを闻いたことがあるでしょう.谁も知らない神のようなチームはいません.    実は私たちが今日議論する話題は主に実況サッカーというゲームで、サッカー界全体のすべてのチームをシミュレートしています.もちろん、開発者が中国のサッカーを加えることができて感謝しています.
各チームにはいくつかの選手がいて、各選手にはいくつかの能力があります.もちろん、異なる選手の能力は違います.私たちが注目しているのは選手のいくつかの能力です:スピード、力、テクニック、視野、攻撃、守備、チームの協力能力.それぞれの能力には比重係数があります.もちろん、異なるチームにとって、各能力が占める比重係数は異なるかもしれません.今日、有名な選手たちを総合能力でランキングしたいと思っています.総合能力値が同じ選手が7つの能力で前から後までを優先すれば、同じものがある場合は、名前の辞書順に小さい順から大きい順に並べ替えます.総合能力の算出方法は,各能力を比重係数で重み付けして合計し,得られた結果をその選手の総合能力値とする.
 
入力
    複数の入力グループがあり、隣接する2つのデータグループは空の行で区切られています.各グループが入力した第一行為当該チームの選手の各能力が占める比重係数
,7
個の整数(
[1,10]
)に対応する
7
アイテムの能力をスペースで区切ります.2行目は正の整数です
N
(
0 < N < 50
)は、そのチームを代表してランキングに参加する選手の総数で、次の
N
行、各行に選手の名前があり、名前の真ん中にスペースがあり、長さは超えない可能性があります.
20
.さらに続く
N
はい、各行に1つ上があります.
N
行の各行に対応するその選手の各能力のデータ、各行
7
スペースで区切られた非負の整数(
[0,10]
).入力処理はファイルが終わるまでです.
しゅつりょく
    各グループのデータは1組の出力に対応し、各グループのデータには入力順に各選手の総合能力とそのグループの総合順位が与えられる(
1
開始)、両者はスペースで区切られ、各選手の出力は1行です.各グループのデータは最後に空の行を出力します.
サンプル入力
10 8 8 10 5 5 10
13  
   
   
  
    
   
     
    
    
  
   
     
    
10 9 10 9 10 8 10
8 8 8 8 8 7 9
8 9 8 7 7 6 7
8 8 9 10 9 8 10
8 8 9 9 10 8 10
8 8 8 7 7 7 7
7 7 8 8 6 7 8
8 9 8 8 7 8 8
6 7 8 8 8 8 8
7 8 9 8 8 10 8
8 7 6 8 7 10 8
6 7 8 8 7 8 7
7 10 8 8 8 9 8
9 10 9 8 6 5 8
5
C.    
   
    
   
   
9 10 10 8 10 8 8
9 9 9 8 9 8 8
9 8 9 9 9 8 9
9 8 9 9 8 8 8
8 9 8 1
0 9 8 8

サンプル出力
532 1
453 6
421 9
501 2
496 3
418 11
415 12
451 7
420 10
456 5
429 8
405 13
459 4
499 14
74 3
480 2
466 5
472 4

ヒント
ソース
tongjiantao
サンプルプログラム
#include <stdio.h>
#include <string.h>
struct
{
    int a[7],zong, m;
    char ming[20];
} pl[51], t;
int main()
{
    int b[7], n, i, j, k, x;
    while(scanf("%d",&b[0])!=EOF)
    {
        for(i = 1; i < 7; i++)
        {
            scanf("%d",&b[i]);
        }
        scanf("%d ",&n);
        for(i = 0; i < n; i++)
            gets(pl[i].ming);
        for(i = 0; i < n; i++)
        {
            pl[i].zong=0;
            for(j = 0; j < 7; j++)
            {
                scanf("%d",&pl[i].a[j]);
                pl[i].zong+=b[j]*pl[i].a[j];
            }
        }
        for(i = 0; i < n; i++)
        {
            pl[i].m = 1;
            for(j = 0; j < n; j++)
            {
                x = 0;
                if(pl[i].zong<pl[j].zong) {pl[i].m++;x=1;}
                else if(pl[i].zong==pl[j].zong)
                {
                    for(k = 0; k < 7; k++)
                    {
                        if(pl[i].a[k]<pl[j].a[k])
                        {
                            pl[i].m++;
                            x=1;
                            break;
                        }
                        else if(pl[i].a[k]>pl[j].a[k])
                        {
                            x=1;
                            break;
                        }
                    }
                }
                else
                    x=1;
                if(x==0&&strcmp(pl[i].ming,pl[j].ming)>0)
                {
                    pl[i].m++;
                }
            }
        }
        for(i = 0; i < n; i++)
        {
            printf("%d %d
",pl[i].zong,pl[i].m); } printf("
"); } return 0; }