PIPIOJ 1037:ランキング

トピックの説明:
今日のコンピューターテストのリアルタイムランクリストがありますが、上記のランキングは、各質問の値を考慮せずに、完了した質問の数のみに基づいているため、最終的なランキングではありません。入学スコアラインを考慮して、最後にスコアラインを通過した候補者を見つけるプログラムを作成し、スコアを降順で印刷してください。

入力:
テスト入力には、いくつかの試験に関する情報が含まれています。各テスト情報の1行目は、候補の数N(0 <N <1000)、テスト質問の数M(0 <M <= 10)、およびスコアライン(正の整数)Gを示します。2行目は、質問Mの正の整数スコアに対する最初の質問。次のN行は、候補者の入場券番号(20以下の文字列)、学生が解決した質問の総数m、および質問を示します。 m個の質問の数(質問番号は1からMまでです)。
読み取った受験者の数が0の場合、入力は終了し、試験は処理されません。

出力:
各テストについて、最初に最初の行のスコア行以上の候補者の数nを出力し、次にオンライン候補者のテスト番号とスコアをスペースで区切って行nの高いものから低いものへと出力します。 。同じスコアの受験者が複数いる場合は、試験番号の昇順で出力されます。

入力例:
4 5 25
10 10 12 13 15
CS004 3 5 1 3
CS003 5 2 4 1 3 5
CS002 2 1 2 CS001
3 2 3 5
1 2 40
10 30 CS001
1 2
2 3 20
10 10 10
CS000000000000000001 0
CS000000000000000002 2 1 2
0

サンプル出力:
3
CS003 60
CS001 37
CS004 37
0
1
CS000000000000000002 20

サンプル図:
ここに画像の説明を挿入
データサンプルの最初のセットの概略図

質問のアイデア:
qsort()関数の調査。

c参照コード:

#include <stdio.h>
#include <stdlib.h>

int n,m,g;

typedef struct{
    
    
	char ch[21];
	int num;
	int id[11];
	int sum;
}STU,*stu;

STU a[1001];
int b[11];

int cmp1(const void *a,const void *b)
{
    
    
	stu pa=(stu)a;
	stu pb=(stu)b;
	int num1=pa->sum;
	int num2=pb->sum;
    if(num1-num2>0)
     return -1;
    else if(num1-num2<0)
     return 1;
    else 
     return cmp2(a,b);
}

int cmp2(const void *a,const void *b)
{
    
    
	stu pa=(stu)a;
	stu pb=(stu)b;
	return strcmp(pa->ch,pb->ch);
}
int main()
{
    
    
	int i,j;
	
	while(scanf("%d",&n)!=EOF&&n!=0)
	{
    
    
		scanf("%d%d",&m,&g);
		
		int count=0;
		for(i=1;i<=m;i++)
		 scanf("%d",&b[i]);
		 
		 for(i=0;i<n;i++)
		 {
    
    
		 	a[i].sum=0; 
			scanf("%s",&a[i].ch);
		 	getchar();
		 	
		 	scanf("%d",&a[i].num);
		 	for(j=0;j<a[i].num;j++)
		 	{
    
    
		 		scanf("%d",&a[i].id[j]);
		 		a[i].sum+=b[a[i].id[j]];
		    }
		 }
		 
		 qsort(a,n,sizeof(STU),cmp1);
		 for(i=0;i<n;i++)
		 {
    
    
		 	if(a[i].sum>=g)
		 	 count++;
		 	else
		 	 break;
		 }
		 
		 printf("%d\n",count);
		 for(j=0;j<i;j++)
		 {
    
    
		 	printf("%s %d\n",a[j].ch,a[j].sum);
		 }
	}
	
	return 0;
}

おすすめ

転載: blog.csdn.net/qq_46139801/article/details/115253464