PAT (Advanced Level) 1075. PAT Judge (25)

简单模拟题。

注意一点:如果一个人所有提交的代码都没编译通过,那么这个人不计排名。

如果一个人提交过的代码中有编译不通过的,也有通过的,那么那份编译不通过的记为0分。

#include<cstdio>
#include<cstring>
#include<cmath>
#include<vector>
#include<map>
#include<stack>
#include<queue>
#include<string>
#include<algorithm>
using namespace std;

const int maxn=10000+10;
int n,k,m;
int val[10];

struct X
{
    int Rank;
    int num;
    int id;
    int tot;
    int get[10];
}s[maxn],ans[maxn];
int sz;

bool cmp(const X&a,const X&b)
{
    if(a.tot==b.tot&&a.num==b.num) return a.id<b.id;
    if(a.tot==b.tot) return a.num>b.num;
    return a.tot>b.tot;
}

int main()
{
    scanf("%d%d%d",&n,&k,&m);
    for(int i=1;i<=k;i++) scanf("%d",&val[i]);
    for(int i=1;i<=n;i++)
    {
        s[i].id=i;
        s[i].num=0;
        s[i].tot=0;
        for(int j=1;j<=k;j++) s[i].get[j]=-2;
    }

    for(int i=1;i<=m;i++)
    {
        int id,pro,get;
        scanf("%d%d%d",&id,&pro,&get);
        s[id].get[pro]=max(s[id].get[pro],get);
    }

    sz=0;
    for(int i=1;i<=n;i++)
    {
        int fail=1;
        for(int j=1;j<=k;j++)
            if(s[i].get[j]>=0) fail=0;
        if(fail==1) continue;
        ans[sz++]=s[i];
    }

    for(int i=0;i<sz;i++)
        for(int j=1;j<=k;j++)
            if(ans[i].get[j]==-1) ans[i].get[j]=0;

    for(int i=0;i<sz;i++)
    {
        for(int j=1;j<=k;j++)
        {
            if(ans[i].get[j]==-2) continue;
            ans[i].tot=ans[i].tot+ans[i].get[j];
            if(ans[i].get[j]==val[j]) ans[i].num++;
        }
    }

    sort(ans,ans+sz,cmp);

    ans[0].Rank=1;
    for(int i=1;i<sz;i++)
    {
        if(ans[i].tot==ans[i-1].tot)
            ans[i].Rank=ans[i-1].Rank;
        else ans[i].Rank=i+1;
    }

    for(int i=0;i<sz;i++)
    {
        printf("%d %05d %d",ans[i].Rank,ans[i].id,ans[i].tot);
        for(int j=1;j<=k;j++)
        {
            printf(" ");
            if(ans[i].get[j]==-2) printf("-");
            else printf("%d",ans[i].get[j]);
        }
        printf("
");
    }

    return 0;
}
原文地址:https://www.cnblogs.com/zufezzt/p/5634917.html