【九度OJ】- 1014

現在水平就這樣,之前用了兩個sort,結果不知道錯在這裏,其實只要會用sort,這題也就是水題一枚

貼下代碼。

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
 
typedef struct Student
{
    char sno[21];
    int wk;//解決題目總數 
    int pb[11];//題號 
    int grade;
}stu;
 
bool cmp(const stu& a, const stu& b)
{
    if (a.grade != b.grade)
    {
        return a.grade > b.grade;
    } else
    {
        return strcmp(a.sno,b.sno)<0;
    }
}
 
int main()
{
    int N,M,G,score[11],count;
    stu s[1005];
    while(cin>>N&&N)
    {
        count = 0;
        scanf("%d%d",&M,&G);
        for(int i =1;i<=M;i++)
        {
            scanf("%d",&score[i]);
        }
        for(int i = 0;i<N;i++)
        {
            scanf("%s%d",s[i].sno,&s[i].wk);
            for(int j =0;j<s[i].wk;j++)
            {
                scanf("%d",&s[i].pb[j]);
            }
        }
        for(int i= 0;i<N;i++)
        {
            s[i].grade =  0;
            for(int j=1;j<=M;j++)
            {
                for(int k =0;k<s[i].wk;k++)
                {
                    if(s[i].pb[k] == j)
                        s[i].grade += score[j];     
                }
            }
        }
        for(int i = 0;i<N;i++)
        {
            if(s[i].grade>=G)
                count++;
        }
        printf("%d\n",count);
        sort(s,s+N,cmp);
        for(int i = 0;i<count;i++)
        {
            printf("%s %d\n",s[i].sno,s[i].grade);
        } 
    }
    return 0;
 } 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章